X



【まず1嫁】くだすれPython(超初心者用) その54

レス数が1000を超えています。これ以上書き込みはできません。
2021/06/09(水) 21:05:44.61ID:zRBfpo4e
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2デフォルトの名無しさん
垢版 |
2021/06/10(木) 09:09:42.55ID:fGM4j9Qy
>>> a=10
>>> x=[a]
>>> x
[10]
>>> a=20
>>> x
[10]
>>> a
20
>>>
なんでxが[20]にならないの?
そうなるにはどうすればいいの?
2021/06/10(木) 09:52:24.45ID:VzpKjmfX
数は書き換え不可の型なんで無理。
a自体を書き換え可能なオブジェクト、例えば配列に入れ込めば、似たようなことは出来なくもないが…
a = [1]
x = [a]
a = [2]
x
4デフォルトの名無しさん
垢版 |
2021/06/10(木) 11:03:02.88ID:smul9M+b
>>2
>>> a = [10]
>>> x = [a]
>>> x
[[10]]
>>> a[0] = 20
>>> a
[20]
>>> x
[[20]]
5デフォルトの名無しさん
垢版 |
2021/06/10(木) 11:05:06.12ID:smul9M+b
>>3
ちょっと何言ってるか判らない
2021/06/10(木) 11:38:53.73ID:VzpKjmfX
>>5
分かったから>>4で訂正したんでしょ?
2021/06/10(木) 19:34:32.89ID:lViDT5hn
リストに何でも入るから
思いつきは失敗する
2021/06/10(木) 21:26:49.02ID:8fi5Ujsh
Pycharmの自動整形には参ったよ
Javaで作ったやつコピペしたらいろいろとやってくれる
リテラルなんか一文字消えてたり空白入れてみたり
実際走らせて気が付くレベル
2021/06/12(土) 22:29:20.54ID:0anF7A9v
openで開いたファイルオブジェクトをforループで読み込む場合、forにオブジェクトをそのまま添えて一行ずつ読み込めるとのことですが
printするとオブジェクトがそのまま表示されてしまいます(_io.TextIOWrapper〜)
みんなのpythonのとおりにやっているつもりですが何がいけないのでしょうか?
python3.7.4を使用しています
2021/06/12(土) 22:40:15.04ID:GOzpxksd
open(a.txt) as f
でfのメソッド使わないと
fがラッパー
そのプログラム見てみたい
2021/06/12(土) 22:44:23.46ID:0anF7A9v
>>10
printの引数が間違っていた単純ミスでした
引数に読み込んだ一行の変数でなくオブジェクトの方を指定していました
ありがとうございました、またちょくちょく質問にくると思います
2021/06/12(土) 22:44:48.20ID:qlTYomdI
>>9
with open(‘path/to/file') as f:
____for line in f:
________print(line, end="")
2021/06/12(土) 23:31:01.35ID:0anF7A9v
>>12
ありがとうございます、無事解決しました
14デフォルトの名無しさん
垢版 |
2021/06/13(日) 02:45:35.12ID:6oAiR6bp
コマンドライン上(bash)で任意のpythonファイルを実行した時に引数に
色を渡してその色で出力したいのですがどう書けばいいでしょうか?

defの引数に(出力したい色, 出力したい文字列)を渡して
色々やってるのですが、詰んでいてどなたか教えてください。。
スッピン書きでは動作確認取れています。(print(pycolor.RED + word + pycolor.END))

class pycolor:
BLACK = '\033[30m'
RED = '\033[31m'
GREEN = '\033[32m'
YELLOW = '\033[33m'
BLUE = '\033[34m'
PURPLE = '\033[35m'
CYAN = '\033[36m'
WHITE = '\033[37m'
RETURN = '\033[07m' #反転
ACCENT = '\033[01m' #強調
FLASH = '\033[05m' #点滅
RED_FLASH = '\033[05;41m' #赤背景+点滅
END = '\033[0m'
2021/06/13(日) 06:19:52.00ID:d/vYrCOI
VSCode や誰かのモジュールなどに、そういう拡張機能が無いの?

Python の質問と言うよりも、端末の設定の話
16デフォルトの名無しさん
垢版 |
2021/06/13(日) 11:13:39.05ID:6oAiR6bp
コマンドライン上プロンプトや補完機能の色付けとかはbashrcで全て管理してるので問題ない(色付け)です。


Pythonで便利な機能なスクリプト書いたので、そこから測れるか文字列を色付けする方法を知らなくて困ってました。
17デフォルトの名無しさん
垢版 |
2021/06/13(日) 13:08:19.84ID:6oAiR6bp
>>16です
補足でエディター上のシンタックスハイライトの設定ではなく
コマンドライン上の標準出力に色つけしたいという意味です。
18デフォルトの名無しさん
垢版 |
2021/06/13(日) 13:15:17.58ID:EhTxteT2
黒魔術であるところのgetattrとか使えばラクに出来るんじゃね

pycolor."BLACK"
とかで呼び出したいんだろ

でも普通に考えれば連想配列を使う
2021/06/13(日) 13:31:22.64ID:1nzveETz
何がしたいのかは分かったけど
今度は何でできないのか分からない
20デフォルトの名無しさん
垢版 |
2021/06/13(日) 14:22:53.04ID:6oAiR6bp
class hogehoge:
  #
  #色の変数リスト省力します
  #

  def printWithColor(self, color, word):
    print(color + word + END)

で出力したいのですが、仮にcolorに赤となる【\033[31m】を展開できないんです。。
selfを消すと引数エラーが出てしまい詰みます。。
2021/06/13(日) 14:27:14.41ID:tn2YN+mq
windows10のコンソールはエスケープシーケンス効かないけどそれ?

とエスパーしてみる
2215
垢版 |
2021/06/13(日) 14:29:53.03ID:d/vYrCOI
漏れなら、VSCode の拡張機能・テーマなどで探すけど

Terminal Color and Style Highlighting for VS Code
https://github.com/TobiasFaller/vscode-vt100-syntax-highlight

「vscode terminal colors extension」「vscode terminal color theme」などで検索してみれば?
23デフォルトの名無しさん
垢版 |
2021/06/13(日) 14:40:04.09ID:EhTxteT2
dic = {
"BLACK": '\033[30m',
"RED": '\033[31m',
"GREEN": '\033[32m'
}

連想配列にすればラクじゃん
2021/06/13(日) 18:45:52.61ID:1nzveETz
COLOR_DICT = {
"BLACK": '\033[30m',
"RED": '\033[31m',
"GREEN": '\033[32m',
}
COLOR_END = '\033[0m'

def printWithColor(color, word):
  print(COLOR_DICT[color] + word + COLOR_END)

そして今度は何か縛り条件が出てくんだろ?
知ってる
25デフォルトの名無しさん
垢版 |
2021/06/13(日) 18:51:41.04ID:6oAiR6bp
できました!!
ご協力いただいた方ありがとうございます!!

class pycolor:
LIST = {
"BLACK": '\033[30m',
"RED": '\033[31m',
"GREEN": '\033[32m',
"YELLOW": '\033[33m',
"BLUE": '\033[34m',
"PURPLE": '\033[35m',
"CYAN": '\033[36m',
"WHITE": '\033[37m',
"RETURN": '\033[07m', #反転
"ACCENT": '\033[01m',#強調
"FLASH": '\033[05m', #点滅
"RED_FLASH": '\033[05;41m', #赤背景+点滅,
"END": '\033[0m'
}

def printColor(self, color, word):
print(self.LIST[color] + word + self.LIST["END"])
26デフォルトの名無しさん
垢版 |
2021/06/13(日) 18:52:25.86ID:QtPR3o33
単純に出力するんじゃなくて、bashに解釈させないとダメなんじゃないの?
echo -e "${python hoge.py}"
こういうイメージ
2021/06/13(日) 18:58:28.21ID:fUoO1UdQ
import rich
28デフォルトの名無しさん
垢版 |
2021/06/13(日) 21:09:48.44ID:EhTxteT2
こういうことを出来るのは知ってた
Windowsでやったことがある

C言語でターミナルで表示される文字をカラー表示させる : Serendip – Webデザイン・プログラミング
https://www.serendip.ws/archives/4635

スネークゲーム
http://vivi.dyndns.org/tech/games/snake.html
29デフォルトの名無しさん
垢版 |
2021/06/13(日) 21:47:36.32ID:6oAiR6bp
>>27
このモジュールいいですね。

普段からshellscriptは書くのですが、pythonは触ったことがなく四苦八苦しておりました。。。
辞書検索 + 登録アプリでも作ろうかと思ってます。
無事出力出来ました。
みなさんありがとうございます!

https://imgur.com/lYUlTXs
2021/06/13(日) 21:59:35.61ID:CH3wHZx1
結局何につまづいていたのか
知りたいものだ
2021/06/14(月) 01:45:14.00ID:XgAL3CwN
未だに分からんよな
32デフォルトの名無しさん
垢版 |
2021/06/14(月) 10:37:51.20ID:TNhB31Ko
色の問題じゃなくてpythonの使い方を知らなかっただけだ
2021/06/14(月) 18:34:18.68ID:4CwMrts3
pythonでAndroidアプリを作ろうとしたら、どんな環境がありますか?
VSCodeで作れれば一番いいのですが、可能ですか?
34デフォルトの名無しさん
垢版 |
2021/06/14(月) 19:04:01.06ID:YySv9lVP
作って作れないことはないけど苦行の極み
1からkotlin覚える方がまだ早いまである
2021/06/14(月) 19:07:21.04ID:hx6guc/Q
自分でやるならPyQTぐらい
2021/06/14(月) 19:07:37.64ID:4CwMrts3
>>34 どうもありがとうございます。
調べてもなかなかないのは、そういう理由ですか。
大人しくAndroid Studioで作ってみます。

あとは、Transcryptでも調べてみるか…
37デフォルトの名無しさん
垢版 |
2021/06/14(月) 19:13:48.59ID:YySv9lVP
凝ったの作らないならpythonで書いて変換系使ってもいいんだけど
ちょっとでも調子乗った瞬間に動かなくなるでな
主観ではpyinstallerの3倍は気を使う
2021/06/14(月) 19:58:22.16ID:l+BKKraS
どんなのかにもよるけどandroidで動けばいいんならwebアプリ作ってブラウザで動かすて手もある
それならflaskでもDjangoでもいける
2021/06/15(火) 10:21:34.56ID:XeCyZroF
Pythonでブラウザ内のJavaScriptが持つ変数の値を読みだすことは可能ですか?
2021/06/15(火) 12:52:49.00ID:NWTMJvL8
スクレイピングしたいのが自分で作ったwebアプリの値取得したいのか分からんけど
スクレイピングならPhantomjsかSeleniumでなんとかなるやろ
webアプリならそもそもjavascript経由せんと直接pythonで受け取ればいいのでは
41デフォルトの名無しさん
垢版 |
2021/06/15(火) 15:23:20.86ID:dTl1pSLY
>>33
SL4A
42デフォルトの名無しさん
垢版 |
2021/06/15(火) 15:24:06.14ID:dTl1pSLY
>>39
Brython
43デフォルトの名無しさん
垢版 |
2021/06/15(火) 16:48:04.29ID:qJPYDaov
drop_indices = [1,3,4]
l1 = [1,2,3,4,5]
l2 = [a,b,c,d,e]
l3 = [.....]

l1〜3の要素数は同じです
指定indexを抜いたl1〜3が欲しいのですが一番高速なやつを教えてください
対象リストがひとつなら内包表記使うんですが複数リスト相手だとどうすればいいですか?

new1, new2, new3 = [],[],[]
for i,_ in enumerate(l1):
_if i not in drop_indices:
__new1.append(l1[i])
__new2.append(l2[i])
__new3.append(l3[i])
l1 = new1
l2 = new2
l3 = new3

しか分からないです…
できれば外部モジュールなしでおながいします
44デフォルトの名無しさん
垢版 |
2021/06/15(火) 16:50:28.49ID:qJPYDaov
なんで速いのが欲しいかというと
実際のl1〜l3が結構長くて
この裁ち落とし処理も複数回呼ぶから
馬鹿にならない感じなのです
45デフォルトの名無しさん
垢版 |
2021/06/15(火) 16:54:06.26ID:YClXDfsH
内包表記3回書けばいいじゃん
それとdrop_indicesはsetにする
46デフォルトの名無しさん
垢版 |
2021/06/15(火) 17:13:12.13ID:yxrEcVUk
まあダサいのはわかるが内包3発かなあ…
2021/06/15(火) 17:22:55.07ID:E1asH+ju
アクセス時にdropするindexを考慮するとか。
def get_data(index):
index += sum(1 for x in drop_indices if x < index)
return l1[index]
テストしてないです
2021/06/15(火) 17:51:26.21ID:ic6VniVo
>>43
新しくリストを生成せずに落としたい箇所をNoneにする方法で対応したら?

drop_indicesの要素数、変更対象リストの要素数、変更対象リストの個数(3個固定?)の
値の取りうる範囲や複数回呼ぶ意味によってどういう実装が望ましいかは変わってくる
49デフォルトの名無しさん
垢版 |
2021/06/15(火) 17:58:15.90ID:dTl1pSLY
>実際のl1〜l3が結構長くて

外部モジュール使わない訳がない
素直に numpy なり pandas なり使え
50デフォルトの名無しさん
垢版 |
2021/06/15(火) 18:14:18.09ID:dILRy9B0
>>43
if i not in drop_indices
ここの計算量は無視していの?
2021/06/15(火) 18:37:20.39ID:TWZkLO+/
inのところリストかセットかの違いだけの問題に一票
52デフォルトの名無しさん
垢版 |
2021/06/15(火) 18:37:58.95ID:YClXDfsH
>>43
リスト1つに纏めるのはどうよ
l=[(1,a,…),(2,b,…)..]
53デフォルトの名無しさん
垢版 |
2021/06/15(火) 18:39:02.16ID:/tfRbTz3
長いって言うんならlはミリオン
dropは1000
あたりだろう

もしかすると何らかのウイルスのDNA解析かもしれない
するとl2,l3にはATとCGがペアになって入ってるかもしれない


で、drop_indicesの逆順を生成してこうする
あとは出たのを全部実測して早いの選ぶのがラク
多分リストのappendでのmalloc回数に左右される


new1 = [x for x in l1]
new2 = [x for x in l2]
new3 = [x for x in l3]

for i in drop_indices_invrese:
_new1.pop(i)
_new2.pop(i)
_new3.pop(i)
54デフォルトの名無しさん
垢版 |
2021/06/15(火) 18:48:50.23ID:dILRy9B0
for i in reversed(drop_indices):
__l1.pop(i)
__l2.pop(i)
__l3.pop(i)
2021/06/15(火) 19:02:46.80ID:u8BqQmUG
dataarray=list(zip(l1,l2,l3))
new.append(dataarray[i])
2021/06/15(火) 19:49:43.00ID:KfvfPOTk
pythonではじめてwebsocketなる通信をして感動しているのですが
クライアント側のjavascriptで
socket.onmessage = function(e) {socket.send("test msg");}を設定したところ、
websocketサーバー側のログが0.5秒?くらい置きに延々と流れてくるのですが
そういうものなのでしょうか?
そのまま放置していると(無料鯖のため?か)websocketサーバーが止まりました。
2021/06/15(火) 20:11:02.45ID:BEepXhp5
サーバにデータを送信したらデータを返却するよう実装したんじゃないの?
2021/06/15(火) 20:32:08.61ID:KfvfPOTk
なるほど
参考にしたサイトが”なでしこ”→"python"で実装されていて
よく見ていませんでしたが改めて見たところ
受信時→WSサーバ全返信
という行を発見しました。
今は制限中なので解けたらその行を消して試してみたいと思います
ありがとうございました
2021/06/16(水) 01:02:00.77ID:baQ8tClP
Flask

頭の中でフラスコって読んでます?それともフラスク?
2021/06/16(水) 07:11:03.38ID:y19mleV6
( ^ω^)フラシコ
61デフォルトの名無しさん
垢版 |
2021/06/16(水) 13:20:18.99ID:mN5o8PJ8
>>43
python初心者です。G,C,Pの出現場所を記録したリストを... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11244753631

>G,C,Pの出現場所を記録したリストを作りたい
>s100 = ['P', 'C', 'G', 'P', 'G', 'C', 'C', 'P', 'G', 'G', 'P', 'C', 'G', 'C', 'P', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'G', 'P', 'C', 'C', 'P', 'G', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'G', 'P', 'C', 'P', 'G', 'G', 'C', 'P', 'G', 'C', 'P', 'C', 'G', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'G', 'P', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'P', 'G', 'C', 'P', 'P', 'P', 'P', 'P', 'C']

なーんか似たような問題が出回ってんな
同一人物か?
2021/06/16(水) 14:58:53.27ID:Si4/JcP/
学校の課題なのでしょう
63デフォルトの名無しさん
垢版 |
2021/06/16(水) 15:22:04.18ID:OiJaUQCk
同じか……?
64デフォルトの名無しさん
垢版 |
2021/06/16(水) 17:14:18.46ID:uJQ6HHCX
>>61
https://ideone.com/dlXO7M
s100 = ['P', 'C', 'G', 'P', 'G', 'C', 'C', 'P', 'G', 'G', 'P', 'C', 'G', 'C', 'P', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'G', 'P', 'C', 'C', 'P', 'G', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'G', 'P', 'C', 'P', 'G', 'G', 'C', 'P', 'G', 'C', 'P', 'C', 'G', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'G', 'P', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'P', 'G', 'C', 'P', 'P', 'P', 'P', 'P', 'C']
pcg = {'P': [], 'C': [], 'G': []}
for i, s in enumerate(s100):
pcg[s].append(i)
print(pcg)
2021/06/16(水) 19:58:32.04ID:aKJkflFH
s100のリストを作ることがG,C,Pの
出現場所を記録したリストを作ること
s100があるならやることはない
66デフォルトの名無しさん
垢版 |
2021/06/17(木) 16:25:36.76ID:JYSb8W8U
>>61
ある言語では
echo@I. 'GCP'=/'PCGPGCCPGGPCGCPCGPPCCGGPCCPGCGPPCCGCPGCCGPCPGGCPGCPCGCPPGCGCPGPCCGPGCPCCGPGCPCGPCPPGCGCPGCCPGCPPPPPC'

2 4 8 9 12 16 21 22 27 29 34 37 40 44 45 48 52 56 58 61 65 67 72 74 78 83 85 88 92
1 5 6 11 13 15 19 20 24 25 28 32 33 35 38 39 42 46 49 51 53 57 59 63 64 68 70 71 75 77 80 84 86 89 90 93 99
0 3 7 10 14 17 18 23 26 30 31 36 41 43 47 50 54 55 60 62 66 69 73 76 79 81 82 87 91 94 95 96 97 98
2021/06/17(木) 20:20:59.14ID:1IveWNJ3
Pythonからmacのシェルコマンドを実行したいのですが引数(ファイル名)が空白と引用符と二重引用符を全て含む時失敗します

例: ファイルコピー)
c1 = 'cp'
c2 = '''s m'p".txt'''
c3 = 'smp2.txt'
p = subprocess.Popen([c1, c2, c3])
p.wait()

「'''s m'p.txt'''」「'''s mp".txt'''」のように引用符が一種類だと大丈夫でした
こんなファイル名でも引数に設定できる方法はないでしょうか?
2021/06/17(木) 21:10:17.24ID:pC2mtQih
python&エスケープで検索
'\'\'s m\'p".txt\'\''
2021/06/17(木) 21:59:44.44ID:1IveWNJ3
>>68
ありがとうございます
しかしエスケープしてもやはり同じように失敗します
(コマンドのヘルプが出る)
コマンド側が対応していないのかもしれないですね
2021/06/18(金) 12:22:12.33ID:+3NN9ESG
"''s m'p\".txt"
2021/06/18(金) 14:47:10.03ID:sJhYE6LE
python学習にあたりおすすめの参考書はございますか?
現在はpython1年生という参考書が終わりそうです。
72デフォルトの名無しさん
垢版 |
2021/06/19(土) 16:37:39.93ID:zDrgWeBe
scikit-learn いいよね
2021/06/20(日) 00:15:38.15ID:md8cXnFb
1回目に実行した内容を記憶しておいて2回目に実行した時は処理を変えたいんですけどなんか良い方法ありますか?
具体的には暗証番号入力するプログラム作ってるんですけど暗証番号の入力に失敗したらロックかけて次に同じプログラム実行したらロックかかってますみたいな表示を出すようなことがやりたいです
2021/06/20(日) 00:18:01.10ID:md8cXnFb
例えばプラグファイル作るでも良いんですけど消されちゃうのであんまり意味ないしジェネレータみたいな感じで1回目の処理を記憶してくれたら良いんですけど
2021/06/20(日) 02:40:25.03ID:rz6SzZvo
よい方法はないですね
問題の形式が変わっただけで、つまるところ「アプリケーションが保存したデータをユーザーに触られないようにしたい」でしかないので
素直にサーバーに認証回数を保存してください
2021/06/20(日) 11:50:00.52ID:2DS4hVGx
そんなあー
2021/06/20(日) 11:53:15.30ID:l9nv7DGg
バイナリ書き換え
2021/06/20(日) 11:59:36.84ID:2DS4hVGx
なんかメモリー上にアクセスキーを暗号化してキャッシュして保存するみたいのできないんですか?
79デフォルトの名無しさん
垢版 |
2021/06/20(日) 12:10:20.32ID:2jVSj7S9
それじゃ通電中保持するだけでね?
裏で保持プログラム動かしとくのと変わらんのでは
80デフォルトの名無しさん
垢版 |
2021/06/20(日) 16:54:13.54ID:vSSpHRy4
memcached (server だけどローカルPCで動作させても良い)
python-memcached

あるいはレジストリ等

どちらも勝手に消されないように対策すること
2021/06/20(日) 18:34:49.45ID:6g3RIy+6
>>78
そこまで来るとDBに情報保存した方が早い
82デフォルトの名無しさん
垢版 |
2021/06/20(日) 18:52:22.86ID:fic9DRbI
メモリだろうが何だろうがローカルに暗号化して保存ってのが既に馬鹿馬鹿しい
金庫の上に鍵状態だって分かってるのか?
83デフォルトの名無しさん
垢版 |
2021/06/20(日) 19:36:06.66ID:Lj9t65si
サーバーサイドなら既存のソリューション利用すりゃいいし
ユーザーサイドならもう違法アクセスされてる時点でパスワードどころの騒ぎじゃないし
何故作るのか見えてこない
2021/06/20(日) 19:49:24.73ID:akuykRB/
>メモリだろうが何だろうがローカルに暗号化して保存ってのが既に馬鹿馬鹿しい

ここだけ切り取ればどこでも普通に行っていることだが?問題はその鍵をどう守るかであって。
2021/06/20(日) 19:53:01.24ID:dLsN/Qk5
余所のプロセスのメモリ覗く奴がいるからな
2021/06/20(日) 20:44:34.12ID:bGnn/scA
他人のプロセスを覗けるのは、そのPC・サーバーの管理者だけ

ただし、サーバーが中国にあれば、中国政府に覗かれる。
そういう法律があるから
2021/06/20(日) 21:09:32.73ID:4yWZiADR
__name__変数について教えてください。
__name__はグローバル変数でモジュール名が格納されていると思います。
ですが、参照をクラス名.__name__とするとモジュール名ではなくクラス名が取得できました。
これはモジュール名が格納されているものとは別の__name__を参照していると思うのですが、どこにある変数を参照しているのでしょうか。
dir(クラス名)としてもそのクラスは__name__変数を持っていないようでした。
2021/06/20(日) 22:02:33.00ID:rz6SzZvo
普通に `クラス名.__name__` の情報だよ
`dir` は引数にもよるが、全ての属性を報告してくるわけではない

https://docs.python.org/ja/3/library/stdtypes.html#special-attributes
https://docs.python.org/ja/3/library/functions.html#dir
2021/06/20(日) 22:17:11.39ID:wq1/6jdm
特殊変数じゃ
2021/06/20(日) 22:39:48.64ID:4yWZiADR
ありがとうございます。dirですべて確認できると思っていました。

ちなみにですが、関数について↓のような認識でした。
関数は__name__変数を持っていないが関数名.__name__でモジュール名が取得できる。
これはその上位であるグローバル変数の__name__を参照しているため。

これももしかしたら関数の持っている__name__を表示している可能性があるのでしょうか。
2021/06/20(日) 23:49:53.27ID:4yWZiADR
>>88
「クラス名.__name__」があるのであれば、
クラス内で__name__のようにして変数名だけで参照したときに、クラス名でなくモジュール名が返ってくるのは何故でしょうか…?

質問ばかりすみません、、訳が分からなくなってきました
2021/06/21(月) 00:03:52.22ID:jGdEx5NM
>>81
そうなるよね
最終的にはもうdbに保存してる毎回呼び出すで良いのではと思えて来た
93デフォルトの名無しさん
垢版 |
2021/06/21(月) 09:16:37.64ID:b28M8oMP
クラスはスコープを作らない。
パッケージグローバル変数を読んでるだけだ。
別に__name__固有の話ではない。
94デフォルトの名無しさん
垢版 |
2021/06/21(月) 14:06:55.24ID:os4CEfZ3
何かの自動化ツールでpasswordを含むプロジェクトがあるとして
githubにうっかりpasswordあげる事故を防止したい
passwordは入力が面倒なのでローカルに保存しておきたい
こんなとき正しいというか定石ってどんなのがある?
2021/06/21(月) 15:17:05.73ID:wnQSc3ge
環境変数から入力することを徹底するのと
コミットをgit-secretsみたいなので未然に防ぐことかな
この辺はPythonとあまり関係ないけどね
(どの言語でも守られるべき)
2021/06/21(月) 15:52:44.89ID:t1WQxVIN
pycriptとかで暗号化じゃダメなのか?
2021/06/21(月) 15:55:22.95ID:t1WQxVIN
年収調べたいので三井住友bankのソースコードをgitにあげたいんですけどどうしたらバレませんか?^ ^
2021/06/21(月) 19:47:08.24ID:pouVmMZT
torとghostsurf でggr
99デフォルトの名無しさん
垢版 |
2021/06/21(月) 20:00:00.26ID:lEZW5cAy
try-except
って遅くないけど、if-elseのような感じで動いてるわけじゃないのですか?
2021/06/22(火) 01:12:59.15ID:cAGj2bSl
>>87ですがやっと理解できました。
__name__は単独で使ったときとオブジェクトに繋げて記述したときとで戻り値が違うのですね。
ありがとうございました。
101デフォルトの名無しさん
垢版 |
2021/06/22(火) 23:33:39.51ID:c2+v+nSA
flaskからpostgres操作するライブラリから使うなんちゃらがインストールできない。
後から追加するライブラリが多いとなんだかんだで環境構築の難易度が上がるのでフルスタックのdjangoとかローコードで良いと思った・・・
2021/06/23(水) 00:00:50.45ID:8eXIGtIl
え?仮想環境入れてないの
マジで?馬鹿じゃないの?
103デフォルトの名無しさん
垢版 |
2021/06/23(水) 07:48:46.56ID:xA3/S05N
あるひとつのフォルダの中身が一定時間後に変わってないことを確認したいんだけど
中身全部ハッシュとって比較するしかないですか?
2021/06/23(水) 11:16:11.54ID:Ps8ud9Ds
ファイルのコンテンツ以外に信頼できる情報がないならそうするしかないんじゃない?
コンテンツの更新が必ずst_mtimeの更新を伴うとか、制約が増やせるなら検証範囲は絞れそうだけど
2021/06/23(水) 12:47:09.88ID:Dblyz7cX
>>94
Ruby on Rails では、credentials という機能があって、

デフォルトで、credentials.yml.enc という暗号化されたファイルと、
その解読キー・master.key がある

master.keyは、.gitignore に書かれているので、
credentials.yml.encを、そのままリポジトリに入れても大丈夫

credentials.yml.encを解読すると、
YML 形式で、AWS の設定などが書かれている

# aws:
# access_key_id: 123
# secret_access_key: 345
106デフォルトの名無しさん
垢版 |
2021/06/23(水) 13:08:26.79ID:6jEPjWCz
OSによるけどフォルダの内容変わったら通知来るAPIがあるものもある
2021/06/23(水) 13:15:55.78ID:qxrmA+Nu
ruby関係ないし
108デフォルトの名無しさん
垢版 |
2021/06/23(水) 19:42:09.00ID:Z7fMxROS
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
2021/06/23(水) 20:49:57.20ID:uwF5rJUS
ルビー基地外クソわろ
全てルビーの機能だと思ってんだろうなw
2021/06/24(木) 01:11:07.96ID:ZhZSLtyl
ドン・キホーテが世の中の全てを騎士道物語として捉えるようなモンだろ
111デフォルトの名無しさん
垢版 |
2021/06/24(木) 11:34:57.39ID:H+zrwBY+
x = [1,5,3]
n = 4
のとき
[[1,2,3,4], [5,6,7,8], [3,4,5,6]]
が欲しい

どう書いたら簡潔ですか?
2021/06/24(木) 11:44:52.69ID:52QaJPvq
x2 = [[j for j in range(i,i+n)] for i in x]
113デフォルトの名無しさん
垢版 |
2021/06/24(木) 12:17:24.20ID:H+zrwBY+
rangeそう使えるの知らなかった…ありがとう
114デフォルトの名無しさん
垢版 |
2021/06/24(木) 12:29:16.33ID:d0WSinGu
>>110

x=[1,5,3]
n=4
y=[list(range(i, i + n)) for i in x]
2021/06/24(木) 12:36:29.47ID:52QaJPvq
rangeはそのままでいいのか。勉強になった。
2021/06/24(木) 19:03:03.87ID:Kxz6ONml
みんなあたまいいなあ
俺馬鹿だからそんなかっこいいコード思いつかないなあ
参考になるわ
[list(range(x[i], x[i]+n)) for i in range(n-1)]
2021/06/24(木) 19:09:37.98ID:Kxz6ONml
>>114が一番綺麗だと思う
模範解答やね
2021/06/24(木) 19:15:27.36ID:OtDRXCUu
問題集でもやっとんのけ
119デフォルトの名無しさん
垢版 |
2021/06/24(木) 20:26:31.26ID:cBTjhTLo
問題集ていや先日

要素数(size)と折り返し(rep) の引数を取って
例えばsize=5, rep=2のとき
1_1
1_2
2_1
2_2
3_1
って右がrepするたびに左が増えるやつ欲しいって言われたんだけど
一瞬まったく意味わからんくて笑った。死ぬかと思った
2021/06/24(木) 20:35:56.55ID:76Eu+yJ9
forの二重ループで回せばいいだけじゃないの普通に…
121デフォルトの名無しさん
垢版 |
2021/06/24(木) 20:42:19.45ID:H+zrwBY+
size=10
rep=3
for i in range(size):
__l=(i//rep)+1
__r=(i%rep)+1
__print(l, r)

こうか
算数怖い
2021/06/24(木) 20:48:54.16ID:ev/ZN6Zz
えw
それそんな難しいことしなきゃダメなのw
2021/06/24(木) 20:50:25.36ID:ev/ZN6Zz
これじゃダメなんけw

size=10
rep=3
[str(i)+'_'+ str(j)for i in range(1, size+1) for j in range(1, rep+1)][0:size]
124デフォルトの名無しさん
垢版 |
2021/06/24(木) 20:54:54.61ID:Uf6wilZL
119を123で書いてきたら俺は殴る
2021/06/24(木) 21:39:25.89ID:Xj45HSPz
def enumrep(size,rep):
_i=0
_b=0
_while True:
__b+=1
__for a in range(rep):
___i+=1
___yield str(b)+'_'+str(a)
___if i>=size:
____return True

for i in enumrep(10,2):
_print(i)
2021/06/24(木) 21:44:30.95ID:PG/lAwcj
コードは長くなるけどgenとtake(=islice)を分けたほうがわかりやすいしメンテしやすい
2021/06/24(木) 21:48:35.74ID:PG/lAwcj
def gen_items(rep):
__if rep < 1:
____return
__i = 1
__while True:
____for j in range(rep):
______yield f"{i}_{j + 1}"
____i = i + 1

for x in islice(gen_items(3), 10):
__print(x)
128デフォルトの名無しさん
垢版 |
2021/06/24(木) 23:27:17.31ID:2xxS1rw4
pathlibのiterdir()でwindowsの$recyclebinやらsystem volume infomationやらといった
隠しフォルダをスキップする方法はありますか?
129デフォルトの名無しさん
垢版 |
2021/06/25(金) 08:30:16.10ID:5m+oUY25
別に内包表記でもインデントさせていいんですよ
2021/06/25(金) 09:19:24.73ID:bhmn+MFf
お前らもっと内包表記とラムダ使っていこうぜ!
131デフォルトの名無しさん
垢版 |
2021/06/25(金) 09:50:24.98ID:gA4+2U8+
>>128
突然難易度上げるな
くだすれだぞ ていうか俺もこれ以外どうやればいいか分からん
import pathlib
import tkinter.filedialog as tkfd
import ctypes
from os import stat
from stat import (
_FILE_ATTRIBUTE_HIDDEN as H,
_FILE_ATTRIBUTE_SYSTEM as S,
_FILE_ATTRIBUTE_READONLY as R)

p = tkfd.askdirectory()
for i in pathlib.Path(p).iterdir():
_attrs = stat(i).st_file_attributes
_check = (bool(attrs&H), bool(attrs&S), bool(attrs&R))
_if any(check):
__print(i, check)
2021/06/25(金) 09:50:43.51ID:eijvgSCB
嫌どす
2021/06/25(金) 13:35:46.23ID:hgpS2vwl
機械学習の数学各分野て分野は紹介されてるけど結局どこまで勉強すればいいのかわからん
例えば線形代数を対角化までやったけどLU分解とか初学者向けの本には乗ってないやつも勉強せんなんの?
134デフォルトの名無しさん
垢版 |
2021/06/25(金) 14:28:27.22ID:Wd+wOk9Z
行列計算のアルゴリズムまで自分で実装(特にpython)することは無いだろう
使い方だけ知ってればOKなパターン
2021/06/25(金) 15:35:46.76ID:vlMp8RRH
Ruby で作ってみた

numbers = [ 1, 5 ]
size = 3

# to_a で、範囲を配列化する
p results = numbers.map{ |init_num| ( init_num...init_num + size ).to_a }
#=> [[1, 2, 3], [5, 6, 7]]

#--------------

size = 3
rep = 2

# 2次元配列
results = ( 1..size ).map do |left_num|
( 1..rep ).map{ |right_num| "#{ left_num }_#{ right_num }" }
end

puts results

出力
1_1
1_2
2_1
2_2
3_1
3_2
136デフォルトの名無しさん
垢版 |
2021/06/25(金) 16:26:01.91ID:Wd+wOk9Z
どこの誤爆よ
2021/06/25(金) 17:04:03.61ID:xue6gzfb
このルビキチはシェルスクリプトスレにも書き込んでたガチの基地外なのです
2021/06/25(金) 17:06:47.97ID:7PD1ckkM
無差別爆撃なので誤爆じゃない
Ruby信者のようで実質Rubyアンチな異常者によるテロ行為
2021/06/25(金) 17:58:50.13ID:k0/VHtDX
ム板に来て本当にrubyが嫌いになったから、彼の試みは完全に成功している
140デフォルトの名無しさん
垢版 |
2021/06/25(金) 18:47:16.58ID:SMv7sy5/
リアル職場ではコミュニケーション取れているのかが気になる
2021/06/25(金) 19:18:02.12ID:X8cOj63K
無職じゃね?
142デフォルトの名無しさん
垢版 |
2021/06/25(金) 19:23:44.62ID:RM0Dpgjh
>>119
f=: 4 : 0
>: ( x , y ) #: i. x
)
___5 f 2

1 1
1 2
2 1
2 2
3 1
2021/06/26(土) 08:37:57.19ID:92XkTmJ1
機械学習のお勉強始めたは
中卒のおいらにはそもそも微分とかきいたことなさすぎてつらひ
2021/06/26(土) 10:07:13.38ID:TDiYD9T2
ま九十九里浜の海岸線の長さはいくつだい?
2021/06/26(土) 11:40:46.23ID:IEuGypw6
2021/06/26(土) 11:54:39.83ID:aONBfxlZ
中卒で機械学習て何ができるんや
フレームワーク使うのも指示された通りにしてるだけで何の値操作してるのか理解できなさそう
147デフォルトの名無しさん
垢版 |
2021/06/26(土) 12:08:13.88ID:UhEO8DM5
つかまず前処理で止まるやろ
2021/06/26(土) 13:40:25.05ID:BFpvs59u
>>146-147
中卒馬鹿にしやがって許さねえからな
2021/06/26(土) 14:11:37.50ID:cKS/UcnU
その意気で見返してみろ
2021/06/26(土) 17:03:03.29ID:TqdTR7t2
算数の復習から始めたほうがいい、マジで
2021/06/26(土) 19:22:30.07ID:dvpuBJnF
今微分の勉強して傾きと切片っていうの理解したわ
馬鹿にしたやつ覚悟してろよ9m
2021/06/26(土) 20:11:16.22ID:LeOl9KfK
>>151
次は積分だな
その前にイプシロン-デルタかもしれんが
153デフォルトの名無しさん
垢版 |
2021/06/26(土) 20:42:50.01ID:UhEO8DM5
def 雇用(people):
..if people >= 高卒:
....if people >= 実務経験:
2021/06/26(土) 21:03:33.77ID:6sjjJ5as
MIT も、Julia へ行ってる。
大学院数学科とかじゃないと採用されない

だから皆、文系はRuby on Rails へ行く。
英語さえ出来れば、文書を読めるから
155デフォルトの名無しさん
垢版 |
2021/06/26(土) 21:05:37.21ID:R2OdYklz
>>154
スレタイも読めないお前が何を言っているんだ
ギャグセンスは一流だな
2021/06/27(日) 10:27:42.26ID:3P9Fscem
>>153
高卒以下のコード書くなよw
def 雇用(people):
..if people.academicHistory>= 高卒 and people.skill >= 実務経験:

だろ
157デフォルトの名無しさん
垢版 |
2021/06/27(日) 11:03:04.37ID:nIt5B8/A
お前こそ中卒だろ。なんだよHistoryって。
TitleまたはDegreeだろ。
2021/06/27(日) 11:11:11.64ID:dEiG0OR8
バカはこれだから…
title は肩書、degree は学位でお前みたいな高卒以下に関係ない属性なw
2021/06/27(日) 12:26:23.00ID:HfXxTqRR
愚かなギャグのせいでRubyガイジの方が優れている一面を見せてしまった
2021/06/27(日) 12:30:57.00ID:d7u3fSB/
今どきのPythonistはそういうのはまとめてAIにぶち込んでなんとなくいい感じに判断する
2021/06/27(日) 12:43:14.16ID:G7M856dZ
そもそも AI ω は意味なんて理解していない
2021/06/27(日) 12:52:09.26ID:ZQs2/men
お前らPythonicなコードを書けよPythonicなコードを
2021/06/27(日) 12:54:10.14ID:ZQs2/men
微分積分なんて概要を理解すればいいんだよ
別に包丁がなんで出来ていてどういう歴史があるかなんて知る必要はなくて俺らに必要なのは包丁で野菜を切るただそれだけなのだから
2021/06/27(日) 15:37:00.86ID:8YEnojkX
まあわざわざ極限使って計算することはなくて形式微分か形暗記したものを手計算なら使うしpcなら数値計算だもんな
微積の傾きと面積の関係、物理単位なら乗数が増減することが分かってれば困ることはない
165デフォルトの名無しさん
垢版 |
2021/06/27(日) 16:35:57.54ID:QiH1o3Ks
楕円の面積は簡単に求められるのに
外周の長さを求めようとすると結局積分が必要になる。
長いほうの直径が27、短いほうの直径が6の楕円の場合
外周の長さを.以下2桁まで求めるには実際にはどうやる?
2021/06/27(日) 17:00:31.72ID:HfXxTqRR
そーゆーのは高校生の甥っ子にでも出題してマウントってろ白痴
2021/06/27(日) 17:47:59.81ID:IGTucaq9
degree って普通、象限の事かと思っていたわ
168デフォルトの名無しさん
垢版 |
2021/06/28(月) 04:45:13.70ID:mjwjNK+P
pipenv installで環境構築した後に行う
pipenv shellって何なんですか??

構築した環境以外にもcdできたりrmしたcpしたり
よく意味がわからないのですが。。。
2021/06/28(月) 09:57:17.80ID:/8Q9yNC8
virtual envをactivateした状態のshellを起動するコマンド
pipenv -hでhelp見て
2021/06/28(月) 10:52:04.76ID:pZ6wi+C3
pythonって便利なんだな
https://twitter.com/nixcraft/status/1408771876848123904
https://twitter.com/5chan_nel (5ch newer account)
2021/06/28(月) 11:40:56.85ID:vg7m4LKe
それリツイートで見たw
2021/06/28(月) 11:46:07.23ID:3eu2Zryg
ラズパイ4でpythonを始めたブログラム初心者です。

python 1年生という書籍の例として入っている文、 PIL.ImageTkというモジュールで悩んでいます。 自分が使っている環境ではこのモジュールが入ってなく、前に進めません。

バージョン違いのものでも動く、これの代わりになるモジュールが ありましたら、 教えていただけませんか?
2021/06/28(月) 12:13:01.95ID:/8Q9yNC8
>>172
なければインストールしなよ

https://pillow.readthedocs.io/en/stable/installation.html
2021/06/28(月) 12:24:21.25ID:XSoi24Ug
>>170
それインスタンスがリークしないか?
2021/06/28(月) 12:33:10.14ID:9lV5OqBm
from iZoo import encho
2021/06/28(月) 14:40:47.37ID:3eu2Zryg
>173
ありがとうございます
しかし試してみましたがインストール中にエラーになったっぽいです…
状況は変わらず…
2021/06/28(月) 14:52:36.48ID:lNsRTxVu
いや状況は変わってるだろ
エラーになったから諦めるんじゃなく、どういうエラーか確認して対処すればいいじゃん
だいたいのエラーはエラー文そのままでググれば解決法が出るし、
出ない場合はここにどんな環境で何がしたくて何をしてどうなったかとエラー全文貼れば教えてくれる人も居るでしょ
178デフォルトの名無しさん
垢版 |
2021/06/28(月) 16:46:51.40ID:V/YMeLZd
.foo.xxx_var
.foo.foo.yyy_var
この二種類の形式の文字列があるとき
xxxとyyyを正規表現で抜くにはどう書いたらいいですか?
179デフォルトの名無しさん
垢版 |
2021/06/28(月) 16:55:20.40ID:JcAv6JCW
.+[^\.]+\_var
2021/06/28(月) 17:18:57.12ID:quG4wdoj
正規表現のスレで、聞いた方がよい
181デフォルトの名無しさん
垢版 |
2021/06/28(月) 18:11:49.59ID:V/YMeLZd
>>180
ああ正規表現スレってあるんですね
失礼しました
2021/06/28(月) 20:34:53.02ID:kbwv0g/L
正規表現て役に立つけど電話番号とかメアドみたいなよく使われるやつじゃないと他人が見たときわけ分かんないし自分も後で見たらわけ分かんなかったりするよな
よくスクレイピングするやつとか正規表現使う頻度にもよるんやろうけど
2021/06/28(月) 20:54:22.62ID:uYdbYpLI
共感得てポンコツなのは自分だけでは無いと安心したいのかな?
余程複雑長大なものでも無ければ解釈に大して手間取らないと思うが
2021/06/28(月) 21:23:46.27ID:gXPrfTZo
>>172
つ Google colab
2021/06/28(月) 22:13:39.69ID:pZ6wi+C3
>>182
電話番号やメアドこそ、正しく正規表現で表そうとするとわけがわからんくなるぞ
2021/06/28(月) 23:28:31.01ID:cZa6zFVz
メアドはともかく電話番号で悩むところあるか?
187デフォルトの名無しさん
垢版 |
2021/06/28(月) 23:56:15.26ID:G75AEbDR
それこそ正規表現のスレ行ってください
2021/06/29(火) 00:11:40.44ID:SX3qNymL
ところで俺の正規表現を見てくれ
2021/06/29(火) 00:48:34.27ID:SOQ8GKtA
誰にもmatchしないソレのことか?
2021/06/29(火) 01:16:00.60ID:wJmyktbp
もう^.*$でいいだろ面倒臭い
2021/06/29(火) 06:09:40.51ID:tBEGF5OC
>>186
今また変わってるけど、July 06, 2011時点だとこんな感じ
http://blog.livedoor.jp/nipotan/archives/51644244.html
2021/06/29(火) 06:42:38.70ID:3+LFbHws
>>191
パズルとしてならいいけど実務でやってるなら単なるバカ
2021/06/29(火) 07:15:42.92ID:tBEGF5OC
「正しく正規表現で表そうとするとわけがわからんくなる」が伝わらんかったみたいだったからサンプル出したけど、まぁこのレベルの精度が必要なら正規表現じゃやらんわなw
2021/06/29(火) 07:41:10.41ID:MxyOwUyS
>>191
厳密に言えば「総務省公表のデータにマッチする正規表現」か。
そこに含まれていない範囲だって未割当の電話番号に違いないでしょ。
2021/06/29(火) 07:46:39.05ID:kJlgCPwb
電話番号と同じパターンの別の番号が出てきたらどうすんだろ
気づかず置換して事故るんかな
2021/06/29(火) 07:47:50.85ID:3NHpnvwy
正規表現でウダウダ言う奴ってこういうアスペ的なバカばっか
2021/06/29(火) 08:29:49.41ID:tBEGF5OC
>>194
ゆるいバリデーションなら、総務省のやつだろうね
アレは楽

リンクのやつは多分各事業者の情報も加味してある
このレベルで実装するなら、メンテが必要なんで、継続的な更新のあるライブラリが必須だね
個人的にはやりたくないw

他言語の資料だけど、これが面白かった
https://speakerdeck.com/memory1994/li-jie-siteokubeki-php-falsebaridesiyon?slide=78
2021/06/29(火) 08:30:57.71ID:tBEGF5OC
ごめん
リンク間違ったw
https://speakerdeck.com/memory1994/li-jie-siteokubeki-php-falsebaridesiyon?slide=74
2021/06/29(火) 08:55:46.98ID:1h4nclxf
今日は中卒の俺が単回帰分析覚えたぞ?
バカにしたやつ震えるがいいw
2021/06/29(火) 09:05:44.12ID:tBEGF5OC
>>199
お前がどんなに頑張って俺に追いつこうとしても、俺のいた場所にお前がついたときには俺はお前の少し前に進んでる
永遠に追いつけないんだ!
byゼノン
2021/06/29(火) 12:30:53.94ID:S91QebJL
>>200
あいたたw
2021/06/29(火) 17:50:23.25ID:SOQ8GKtA
>>200
こういう引用する方が中卒、いや中坊っぽい
2021/06/29(火) 19:22:41.33ID:vRfx68y2
なんかたまに名言でドヤって来るやついるけどダサいよな
内容より誰が言うかやからな
あとゲームとか漫画の引用は中学生までや
2021/06/29(火) 19:36:36.48ID:1h4nclxf
やれやれだぜ
2021/06/29(火) 20:19:27.59ID:eB1TyNRb
まんがじゃないよ…
2021/06/29(火) 21:30:03.66ID:MxyOwUyS
そういわれると「ゼノンのパラドックス」ってすごい厨二ネーミングに見えてきた。。。
2021/06/29(火) 21:44:38.04ID:1h4nclxf
いやダイクストラのアルゴリズムのが厨二っぽい
2021/06/29(火) 21:54:10.56ID:MxyOwUyS
どっちが上とか言い出したら「フェルマーの最終定理」
209デフォルトの名無しさん
垢版 |
2021/06/29(火) 23:42:32.20ID:hw58oJ3l
次元の呪い
2021/06/30(水) 00:19:49.96ID:lUxCO1IZ
これは何歳までだとか自分がどう見られるかに拘ってる内はまだまだガキ
2021/06/30(水) 04:50:10.49ID:dkF+z6Xg
飛んでる矢を止めてるのは俺かDioか、それが問題だ
byゼノン

>>204
中卒、おもろいなw
2021/06/30(水) 07:48:27.13ID:D9KqFPaB
httpサーバー立てるときに

@route('/')
def index():
_pass

@route('hoge')
def hoge():
_ pass

という風に分けるのですが
index()ではimport sample1を
hoge()ではimport sample2をしたいとき、
一番上(defの外)にまとめてimport sample1,sample2とするのかそれとも
index(),hoge()の中それぞれでimportした方がいいのか
何か慣習はあるのでしょうか?
2021/06/30(水) 08:54:34.29ID:fR3i2rdt
httpサーバーであるという情報とかデコレーターが付いてるのとかが質問にどう関わるのかよく分からんが、sample1モジュールはindex関数だけから、sample2モジュールはhoge関数だけから使われるケースで何処でimportするか、ということなら、俺の場合
index()やhoge()が__name__ == '__main__'が真であるときにのみ呼ばれるならindexやhogeの中で、そうでないならソースの先頭でimportしてる
つまり、そのソースが単体で実行されるときにしか使わないモジュールは、モジュールとして他のコードにimportされるときにはimportしたくない、という貧乏根性
2021/06/30(水) 09:39:57.08ID:QIg09vqW
>>212
特別な理由がない限りは全て先頭でimportしたほうがいい
importは重い処理だしエラーを発生させやすいので、なるべく起動時に済ませてしまった方がアプリの挙動が安定する
毎回実行される訳ではないが、初回実行のタイミングの問題だ
Webアプリで特定のアクションが呼ばれたときにエラーで落ちるとか初回実行時だけやたら遅いとかデバッグするの嫌でしょ
逆に、必要になったときに初めて読み込むことで起動時間やメモリ消費を抑えるテクニックもあるが、役に立つのは分散処理フレームワークなど極めて特殊なケースだ
215デフォルトの名無しさん
垢版 |
2021/06/30(水) 10:47:08.67ID:x9tVpfG6
そもそもめったに使わない(まったく使わない)機能のために
依存関係増やしたくないしな
2021/06/30(水) 21:12:10.78ID:iVkkZXbL
Ruby のrequire は、同じファイルを1回しか読み込まないので、簡単
2021/06/30(水) 22:30:32.84ID:EN4MKAxN
Rubywww
2021/06/30(水) 22:57:27.70ID:C441gc0U
RubyとMindはオワコン。
2021/06/30(水) 23:06:38.74ID:N62KG6DK
利用率ではもはやPerlとどっこいなRuby
220デフォルトの名無しさん
垢版 |
2021/07/01(木) 09:12:46.98ID:47t/afFm
string = '<001>_<9>'
size = 3
から
strings = ['001_9', '002_10', '003_11']
文字列中のタグ部分を任意の長さだけカウントアップした配列が欲しい
def multiple_counting(size, string):
_pat = re.compile(r'<(\d+)>')
_tags = pat.findall(string)
#カウント作成
_counters = []
_for tag in tags:
__counters.append([str(int(tag)+1).zfill(len(tag)) for i in range(size)])
#書き換え
_strings = [string]*size
_for counter in counters:
__strings = [pat.sub(count, string, 1) for count, string in zip(counter,strings)]

_return strings

なんか便利な関数とか、もっとシュッとしたやり方とかあると思うんですが
知らないので教えてください.あと再帰関数使いたかったけど挫折しました
221デフォルトの名無しさん
垢版 |
2021/07/01(木) 09:53:11.45ID:n7sulsnm
置換マップみたいなのなかったっけ
222 【ぴょん吉】
垢版 |
2021/07/01(木) 10:36:03.88ID:Ipwd3DUh
>>220
[re.sub(r'<([0-9]+)>', lambda m: f'{{:0{len(m[1])}}}'.format(int(m[1]) + i), string) for i in range(size)]
223デフォルトの名無しさん
垢版 |
2021/07/01(木) 18:34:44.42ID:47t/afFm
>>222
ありがとうございます
2021/07/01(木) 19:00:33.74ID:s31eTWYH
今日は重回帰分析勉強したわ
スカラーベクトル行列転置をやったけど逆行列って言うのがよくわからねえわ
そろそろ中卒の俺の頭もセグメンテーションエラーだわ
じゃあの
2021/07/01(木) 19:55:12.97ID:m9mL4lnU
>>224
誰もお前に興味ないから無駄な報告は要らんぞ
2021/07/02(金) 08:18:08.33ID:tPTf4bIR
>>225
お前俺に興味津々だな
また来るわじゃあの
227デフォルトの名無しさん
垢版 |
2021/07/02(金) 08:46:35.95ID:9LnHCrkz
>>224
さきに高校数学と線形代数やれ
2021/07/02(金) 13:03:57.17ID:cZhhmJXr
>>227
もちろんやったわ
スカラーベクトル行列は理解したわ
229デフォルトの名無しさん
垢版 |
2021/07/02(金) 13:17:37.81ID:9LnHCrkz
それで逆行列が分からんのに何を理解したというねん
2021/07/02(金) 13:26:09.60ID:m4gnkicM
はい出ましたw
きちんと理解してないから分からないとかいう奴www
2021/07/02(金) 13:32:26.18ID:ILBLMl6W
やつ
2021/07/02(金) 17:57:31.72ID:Xm/bZCrF
value: int みたいに型指定したほうがいいの?
2021/07/02(金) 21:23:10.28ID:SG4SXaSP
Python処理系は今のところdataclassのフィールド生成くらいにしかタイプヒントを利用しない
それ以外のタイプヒントは完全にタイプチェッカー向けで、タイプチェッカーを利用しないならつける意味はない
2021/07/02(金) 21:53:09.57ID:QH8xfbBh
逆行列のどこが分からないのかな

AB=I
Iは単位行列
のときBはAの逆行列
235デフォルトの名無しさん
垢版 |
2021/07/02(金) 22:17:24.51ID:E59Amcuv
逆元が分からんのだろ
行列やってる段階の奴が群知ってるとは思えないが
2021/07/03(土) 09:39:19.49ID:UqPPpbRy
>>234
いや単位行列は斜めに1があるやつで
逆行列は普通の行列に逆行列をかけると単位行列になるって言うのはわかるんだよ
ただその後これはスカラーですだのこれはベクトルですだの出てきて記号いっぱいになると途端に訳が分からなくなるのだよ分かる?
行列積があーだのこーだの
2021/07/03(土) 09:40:33.15ID:UqPPpbRy
>>235
偉そうなやつだなあ
友達いないだろお前?
238デフォルトの名無しさん
垢版 |
2021/07/03(土) 11:01:50.13ID:gq7PWL9B
>>236
馬鹿には無理
2021/07/03(土) 11:06:01.41ID:MyiFvpsW
おっさんは行列を高校でやってるからなあ
2021/07/03(土) 11:53:08.74ID:ENhcG6bL
内積、外積
241デフォルトの名無しさん
垢版 |
2021/07/03(土) 12:45:29.69ID:WO4lFPcp
>>236
>分かる?
とか言われてもその気持ちは分からんなぁ

普通に行列やって普通に単位取れたってことは特に苦労しなかったんだから、
ワケが分からなくなることがなかった

記号が一杯でも初見で大丈夫だったからお前の気持ちは一切分からん
2021/07/03(土) 14:35:42.16ID:ZeViGhZj
関流に弟子入りするべき
2021/07/03(土) 16:40:21.53ID:mObkgdSa
>>236
とりあえずは普通の掛け算だと思って
(可換則は成り立たないけど)
大丈夫なんだが
2021/07/03(土) 17:33:35.17ID:KyOEtNLT
pythonってプログラミング言語の中では簡単な方って本当ですか?
最近勉強してるんですが難し過ぎるんですが
245デフォルトの名無しさん
垢版 |
2021/07/03(土) 17:57:04.61ID:2G/hXmzA
[[1,2,3], [1,2,3], [1,2,3]]
がほしいとき
[[1,2,3]*3]じゃなくて[[1,2,3]]*3だけど
感覚的には前者なので違和感が強いです
なんかいい感じに納得させてもらえませんか
2021/07/03(土) 18:07:23.78ID:bc4tv4Cc
>>244
言語としては簡単な方だよ
ただ言語の難しさとプログラミングの難しさって別だからね
言語の選択ってのは迷路の広い入り口を選ぶか狭い入り口を選ぶかであって、迷路を進み始めると後は同じなんだよ
247デフォルトの名無しさん
垢版 |
2021/07/03(土) 18:15:50.79ID:WO4lFPcp
かんたん言ってる奴は先に別の言語をやってた可能性が高い
それに比べるとかんたんと言ってる
2021/07/03(土) 19:42:13.76ID:KyOEtNLT
>>246
なるほど
一つの言語を極めると他の言語を覚えるのは簡単と言うのが分かった気がします
pythonを極められるように頑張ります
2021/07/03(土) 20:08:02.32ID:IMGL3rxE
>>245
'aho'*3は
'ahoahoaho'になる
''や[]は*3に文字列やリストを渡す
役目があって*3の前に役目を終えている
2021/07/03(土) 21:33:02.67ID:I7Zt9Z8V
合成関数のとことかシグモイド関数の微分とかお前らモヤらんのか?
中卒野俺にはわからんがめっちゃ頭いいな
251デフォルトの名無しさん
垢版 |
2021/07/03(土) 23:09:47.68ID:91vjT9iB
頑張って一般化逆行列を理解しよう
2021/07/03(土) 23:27:47.89ID:avhnjRXY
YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
初心者は、Ruby on Rails から始める

Python, PHP も勧めていない

バックエンドは、Ruby → Go という路線
253デフォルトの名無しさん
垢版 |
2021/07/04(日) 00:07:57.92ID:DDnLb3K7
ケンタはあわしろ氏の一番弟子。
実力は折り紙付き。
2021/07/04(日) 03:15:46.12ID:kVVHiiiU
TIOBEのTOP10から転落した落ち目言語はポイーで
255デフォルトの名無しさん
垢版 |
2021/07/04(日) 08:47:31.64ID:5abFjuPT
範囲内、重複なしのreq_indexでdb(リスト)からデータ取得する
selection = [db[idx] for idx in req]
こういうのの逆で、渡されたreqに含まれてないidxデータ取得するとき、一番スマートなのはどういう書き方?
256デフォルトの名無しさん
垢版 |
2021/07/04(日) 08:50:25.61ID:5abFjuPT
db[あ,い,う,え]
req[0,2]
get[い,え]
ていう場合
2021/07/04(日) 10:13:27.09ID:hbHHSLi0
>>255
[[i, v] for i, v in enumrate(db) if i not in req]

おわり
258デフォルトの名無しさん
垢版 |
2021/07/04(日) 10:17:54.09ID:pili1Lz/
>>245
[3*3] -> [9]
[3]*3 -> [3, 3, 3]
[[3*3]] -> [[9]]
[[3]*3] -> [[3, 3, 3]]
[[3]]*3 -> [[3], [3], [3]]
259デフォルトの名無しさん
垢版 |
2021/07/04(日) 10:19:32.88ID:pili1Lz/
>>248
>一つの言語を極めると他の言語を覚えるのは簡単と言う

誰が言ったの?
2021/07/04(日) 12:15:28.10ID:1R4z78Cs
ってみんな言ってます!
2021/07/04(日) 14:20:14.26ID:BYgnURbL
わしもそう思う
2021/07/04(日) 15:29:30.76ID:uQBb7zfv
いやプログラムの根底は演算と型と制御だろ
そりゃベースが出来てれば大体何でも出来るわ
2021/07/04(日) 15:59:44.10ID:SaImNcMt
あとライブラリの探し方と使い方かな
264デフォルトの名無しさん
垢版 |
2021/07/04(日) 16:34:17.72ID:i/yFAdE3
>>255
db=[10,20,30,40]
req=[0,2]
a=list(set(db)-{db[i] for i in req})
2021/07/04(日) 17:11:19.65ID:Thc8jF3i
プログラムの根底とプログラミングの根底は全く別物
その程度の区別が出来ないようなら大体何も出来ない
2021/07/04(日) 18:27:39.63ID:CJXzLbyo
proxyを通して接続するときに、そのproxyが生きているかどうかだけ確認したいのですが
実際に存在する適当なサイトに接続してステータスコード200を確認すればよいのでしょうか?

今は、
プロキシ経由OKの(なるべくレスポンスの速い)サイトでrequests.getして200返ってきたらproxy生存
みたいにしてるのですが
それ専用のチェックの仕方があるのかな、と気になりました
2021/07/04(日) 19:06:12.27ID:KdurfuN3
>>265
確かに1行目と2行目の文章が繋がってないお前が言うと説得力あるなあ
2021/07/04(日) 20:09:32.45ID:L4Prcy4Z
>>255
[db[i] for i in {i for i in range(len(db))}-set(req)]
2021/07/04(日) 21:43:55.75ID:aHJdtdht
>一つの言語を極めると、他の言語を覚えるのは簡単

これ自体が嘘。
10年以上掛かるし、各言語の特殊性を学んでも、再利用できないから無駄

YouTube で有名な、雑食系エンジニア・KENTA は全く逆の事を言ってる

80 : 20 の法則。
簡単な80% の部分だけを学ぶべき

難しい20%の部分は、特殊だから再利用できない・使う頻度が少ない割に、
学ぶ時間が何倍も掛かるので、効率が悪い

専門学校で必ず言われること

例えば、法律の条文の暗記とか、
15題ずつ、重要度A・B・Cのランクがあったら、
AB だけ暗記して、C を捨てろとか

使う・出る確率が低いから、そこに暗記コストを掛けるのが無駄

ドラゴン桜で言う、京大英語・赤本で英語を学ぶなという格言。
特殊で、誰も使わないようなトリビア表現に、時間を掛けるな

数百人のネイティブがチェックしてる、英検をやれ
2021/07/04(日) 21:52:26.25ID:1R4z78Cs
>>269
その20:80割合逆だろ
簡単以前なことも学べてないじゃないか
2021/07/04(日) 22:03:17.62ID:9C8iWrP9
推奨NGWord
Ruby
あわしろ氏
雑食系エンジニア
272デフォルトの名無しさん
垢版 |
2021/07/04(日) 22:19:49.10ID:YfSOCxWP
そうして簡単な単純労働しかできない人が量産されるんですね
2021/07/04(日) 22:21:45.55ID:1R4z78Cs
簡単な部分の精度を上げろってこった
2021/07/04(日) 22:35:43.14ID:ZDZVmq0W
難しい2割を理解できる人が世の中をまわす
2021/07/04(日) 22:38:11.14ID:1R4z78Cs
むつかしいほうは8割だっつっとろうが
2021/07/04(日) 22:39:45.78ID:SVViFRUT
>>270
横からだが逆じゃないと思うよ
もちろん全体の100をどう捉えるか次第だけど
277269
垢版 |
2021/07/04(日) 22:40:16.40ID:aHJdtdht
簡単な80% の部分を、横に進めていく。
Ruby on Rails なんて、まさにそう。浅く広く

Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース

さらに、AWS Fargate, Terraform, Vue.js, TypeScript

KENTA のサロン、AWSのくろかわこうへいのサロンに入る。
だから、1年の未経験者が、10年以上のプロよりも技術力が上になる!

時間が掛かる、難しい20%の部分を勉強しないから。
これを、KENTAが勉強方法のチートと言ってる

簡単な80%の部分の勉強時間は、20%しか掛からないのに、
難しい20%の部分の勉強時間は、80%掛かる

つまり、勉強時間では逆になる。
しかも、特殊だから再利用できない・使う頻度が少なく、役に立たない

例えば、C を10年やってる香具師の大部分の時間が、ポインターを追っかけている時間

だから、時間が掛かるだけで、何も学べていないから、
Railsを1年やっただけの未経験者に負けてしまう

Rubyの女神・池澤あやかも言ってる。
大学生がプログラミングで挫折するのは、Cをやるからだって

つまり、ほぼ無意味なことを長時間やるから、しょーもない
2021/07/04(日) 22:41:49.47ID:ZDZVmq0W
重要なのは2割って話は知ってるけど
簡単なのは2割って知らんな
2021/07/04(日) 22:48:09.20ID:1R4z78Cs
統失煽りで文化人を一人殺したので
名前が同じだけでもてはやされてたKENTAは用済み
2021/07/04(日) 23:01:11.65ID:PTs94Rmb
Rubyって時点でお察し
281デフォルトの名無しさん
垢版 |
2021/07/05(月) 00:27:11.73ID:SA0zdM26
> だから、1年の未経験者が、10年以上のプロよりも技術力が上になる!

プロ舐めすぎやろ
自分のレベルすら正確に把握出来てないだけじゃん
282デフォルトの名無しさん
垢版 |
2021/07/05(月) 01:30:50.54ID:cyuSl6kj
>>245
演算規則を考えよう
1 * 3 = 1 + 1 + 1 = 3
[1] * 3 = [1] + [1] + [1] = [1, 1, 1]
であるので、
[[1]] * 3 = [[1]] + [[1]] + [[1]] = [[1], [1], [1]]
となる
加算と乗算に一貫性をもたせるとしたらこうするか、
1 + 1 = [1, 1]
[1] + [1] = [[1] + [1]]
のような規則にするしかないけど、明らかに1 + 1がリストになっちゃうのは使いにくいでしょ
2021/07/05(月) 01:54:24.43ID:ts/O0CHN
>>281
ダニングクルーガー効果ってのがあってぇ…
284デフォルトの名無しさん
垢版 |
2021/07/05(月) 08:07:41.22ID:308oM4PQ
>>255
db=[10,20,30,40]
req=[0,2]
a=len(db)
for i in req: db.pop(i-a)
285デフォルトの名無しさん
垢版 |
2021/07/05(月) 11:09:29.47ID:c503ASju
>>281
https://bokurema.com/
2021/07/05(月) 11:52:44.70ID:DJ8mSFAE
Railsはすべて分かっている人にとっては楽
初心者は設定や、細かいチューニングで必ずつまずく
2021/07/05(月) 14:49:22.59ID:WfBg4Dd7
pandasで特定の列(横)の重複した値を削除して一つだけにするのってどうするの
例えばA,B,C,B,C,DってあったらA,B,C,,,Dにしたい(BやCのみでも可)
288デフォルトの名無しさん
垢版 |
2021/07/05(月) 14:56:34.11ID:zfQ+6anv
kwsk
289デフォルトの名無しさん
垢版 |
2021/07/05(月) 17:20:56.75ID:rH8GS2yx
>>287
あえてPandas使ってとなるとむずいな
2021/07/05(月) 18:56:50.40ID:+tp9LwEv
BやCのみでも可なら
df.replace('B','').replace('C','')

それとは別にdf.duplicatedで空白にしたいインデックスがTrueになる
データフレームが得られる

データフレームにSQLほどの機能はないようだ
291デフォルトの名無しさん
垢版 |
2021/07/05(月) 20:17:35.08ID:41zUyXOD
dfの横はlist的に扱えるから一次元リストの重複要素を任意の値に置き換えるという操作をするだけでは?
2021/07/05(月) 21:27:56.39ID:WfBg4Dd7
サンクス!
2021/07/06(火) 00:10:38.82ID:c1bms/+C
みんなのPythonで勉強しているのですがP340のwith文の説明がよくわかりません
私の理解では、with文でopen()した場合は、ファイルを最後まで読み切ったら自動的にclose()する処理になると思っています
この参考書には、openするファイルが存在しなかったらファイルを開かないで処理を終了する、ということが書いてあるのですが間違っていないでしょうか
openするファイルが存在しないと普通にエラーになるのですが
294デフォルトの名無しさん
垢版 |
2021/07/06(火) 00:38:25.59ID:wcT5LwJn
modeによるとしか
readならその通り。writeはファイルが存在しなければ作成される。
295デフォルトの名無しさん
垢版 |
2021/07/06(火) 00:48:09.74ID:IX8Wt/RA
modeの話?
2021/07/06(火) 00:52:21.13ID:AJxevGXU
Ruby では、存在しないファイルを読もうとしたら、エラーになる。No such file

print File.read 'abc.txt'

出力
No such file or directory @ rb_sysopen - abc.txt (Errno::ENOENT)
2021/07/06(火) 01:06:54.99ID:c1bms/+C
参考書の例文はモード指定しない既定なのでreadです
with文のreadモードで開いたファイルをfor文で一行ずつprintしています
説明によると、ファイルが存在していたら処理を行うという意味のコードになるとのことです
2021/07/06(火) 01:21:35.74ID:n3HBlCzk
おじちゃんせっかくマニュアルあるのに読まない子の気持ちはわからないよ
https://docs.python.org/ja/3/library/functions.html?highlight=open#open
2021/07/06(火) 01:33:10.58ID:M25Qh6q2
>>293
>私の理解では、with文でopen()した場合は、ファイルを最後まで読み切ったら自動的にclose()する処理になると思っています

違うよ

>この参考書には、openするファイルが存在しなかったらファイルを開かないで処理を終了する、ということが書いてあるのですが間違っていないでしょうか

サンプルコードではFileNotFoundErrorをハンドリングしてるね
https://colab.research.google.com/github/shibats/minpy_samplecodes_4th/blob/master/Chapter10/10-01.ipynb
300デフォルトの名無しさん
垢版 |
2021/07/06(火) 16:37:29.04ID:ewE8N/dz
def test():
__return random.randint(2,5)

obj=[test(), 0, 1]
l = random.choices(obj, k=3)
# -> [4,2,0]

testが毎回実行されて(lに違う数字で入って)ほしい
どう書けばいいの?
2021/07/06(火) 16:45:42.95ID:Fj5fpx8O
>>293
withブロックを出るときにclose
open関数の中で
ファイル確認して
ファイルを開く
ファイル確認でエラー
開いてない
ないのに開けない
2021/07/06(火) 16:46:46.00ID:8bcWgGBz
def test():
__return random.randint(2,5)

def exectest():
__obj=[test(), 0, 1]
__l = random.choices(obj, k=3)

exectest()
2021/07/06(火) 18:44:35.16ID:yuAoY/NP
numpy.loadtxtでcsvファイルを読み込むんだが、csvファイルのデータが崩れていることがある。
で、何行目にエラーがあって取り込めなかったのかを知りたいんだが、いい方法ない?

データが崩れているというのは、例えば、
-1.234,123.45.789,
みたいに、ありえない数値表現が紛れているということなんだが

csvファイルが崩れないようにするのが本筋だけどそっちに頑張る気がないので
おかしな行を見つけたら手動でその行を削除して再度処理という感じで運用したい
2021/07/06(火) 19:22:28.01ID:BTTPD25v
typeでチェックすれば
305デフォルトの名無しさん
垢版 |
2021/07/06(火) 20:02:32.04ID:MGYt6+tS
通常はどういう数値が入るのか分からんとなんとも言えないな
2021/07/06(火) 21:14:42.87ID:yuAoY/NP
>>304
詳しく

>>305
通常は小数点付きの数値でマイナスの場合もある
307デフォルトの名無しさん
垢版 |
2021/07/07(水) 00:12:50.55ID:eWdID8i0
>>303
1pandasで文字列としてロード
2走査しつつ数値にパース
3失敗したらスキップ
2021/07/07(水) 00:17:53.03ID:bUHYGk47
例えば、Ruby では各列を、変換器・converter で変換して、
変換できたかどうか、型を確認するとか

require "csv"

input_str = <<"EOT"
-0.0,1.2.3
9..9,-0
EOT

csv = CSV.new( input_str )
csv.convert( :numeric ) # 数値型へ変換する

line_num = 0 # 行番号
csv.each do |row|
line_num += 1
p [ line_num, row[ 0 ].class, row[ 1 ].class ]
end

出力
[1, Float, String]
[2, String, Integer]

1.2.3, 9..9 が、変換に失敗して、文字列型のまま
2021/07/07(水) 00:41:11.10ID:DonMIAPH
>>293です
よく分からなかったのは私の勘違いが原因でした
P340に記載されている内容はP338の差分だったことが分かりました
やっと理解できました
失礼いたしました、皆様ありがとうございました
2021/07/07(水) 00:49:15.09ID:85qcEXGX
>>308
せめてnumpyを移植してから知った風な口を利け
2021/07/07(水) 14:46:15.07ID:JFEXb6g2
pep8に
単一の文字 'l' (小文字のエル)、'O' (大文字のオー)、'I'(大文字のアイ) を決して変数に使わないでください。
フォントによっては、これらの文字は数字の1や0と区別が付かない場合があります。

ってあるけど、上のような理屈であれば、単一の文字でなくても同じ理由で使うべきではないことになるんでは?
312デフォルトの名無しさん
垢版 |
2021/07/07(水) 15:11:46.21ID:49748z4f
10ng と long と IONG を間違うかって話だな
2021/07/07(水) 16:43:31.83ID:2KJNjcti
$python hoge.py 10 | python hoge2.py | python hoge3.py

### hoge.py ###
import sys
for i in range(int(sys.argv[1])):
_print(i)

### hoge2.py ###
import sys
a=''.join(sys.stdin.readlines()).strip().split('\n')
a.append(len(a))
for n in a:
_print(n)

### hoge3.py ###
import sys
print(len(''.join(sys.stdin.readlines()).strip().split('\n')))

ざっくり
(1)hoge.py 10で10個数字を出力
(2)hoge2.pyで受け取り、値を追加して出力
(3)hoge3.pyで受け取り、1個増えたことを確認
なのですが、受け取った値を成形する
''.join(sys.stdin.readlines()).strip().split('\n')
の部分はこの書き方でよいでしょうか?
そもそも標準出力をprintでやるのかもわかりません
それ専用の標準ライブラリとかあるのかな
2021/07/07(水) 17:49:17.95ID:vUBZA2na
>>313
標準出力はprintでやるのでいいよ
1行ごとに処理したいわけじゃなければ.read().splitlines()すればいいと思う

#hoge2.py
import sys
a = sys.stdin.read().splitlines()
a.append(len(a))
for n in a:
__print(n)

#hoge3.py
import sys
print(len(sys.stdin.read().splitlines()))
2021/07/07(水) 18:46:33.05ID:2KJNjcti
>>314
なるほどprintでよかったんですね
splitlinesできました!ありがとうございました
2021/07/08(木) 21:41:26.17ID:g5ngXWNu
raspbian buster上のpython3.7.3で、
subprocess上で読み込むcsvファイルをStringIOにするとうまくいかず困っています。

以下2つのソースで、異なるのは1行目だけです。

[test1.py]
CSVFILE = '/tmp/1.csv'
with open(f'{CSVFILE}', 'a') as CSV:
writer = csv.writer(CSV)
writer.writerow([12,34,56])
CSV.close()
cmd = (f'cat {CSVFILE}')
proc = subprocess.run(cmd, shell=True)

[test2.py]
CSVFILE = io.StringIO()
with open(f'{CSVFILE}', 'a') as CSV:
writer = csv.writer(CSV)
writer.writerow([12,34,56])
CSV.close()
cmd = (f'cat {CSVFILE}')
proc = subprocess.run(cmd, shell=True)

$ python3 test1.py
12,34,56

$ python3 test2.py
/bin/sh: 1: Syntax error: end of file unexpected

何を見落としてるんでしょうか…?
2021/07/08(木) 22:38:29.83ID:PyDOiOef
何をしたいかが全く分からないがとにかく
そのエラーは/bin/shが
cat <_io.StringIO object at 0x7f1360de01f0>
とかいう文字列を実行しようとして
>が出力のリダイレクトと解釈してその後にファイル名がないからエラーになってる
318316
垢版 |
2021/07/09(金) 07:49:00.55ID:6wIK8ZSE
>>317
ありがとうございます!
例で実現したいことは、
$ python3 test2.py
12,34,56
この結果が出るにはどうしたら良いかが知りたいです。

シェルから見て実体のあるファイル名でないとダメってことですね。それはそうか。
一度ファイルシステムに書き出せば良いのでしょうが、それ以外の手はないでしょうか。

なお、例では長くなるのでcatコマンドに書き換えましたが、実際にやりたいことは
「pythonの前段処理結果をcsvに書き込み、そのcsvをgnuplotで読み込んで作図(を毎秒繰り返し)」というプログラムです。
処理結果の数字は毎秒積み上がっていくのと、プログラム終了時には実体のcsvファイルに書き出したいのとで
プログラム上では、StringIOを使ったcsvファイルとして処理したいです。
2021/07/09(金) 08:12:26.61ID:2AR12dC9
>>318
>「pythonの前段処理結果をcsvに書き込み、そのcsvをgnuplotで読み込んで作図(を毎秒繰り返し)」
だったら質問の意味が尚更分からん
上記の処理を1プログラムでやりたいなら
Pythonで前処理⇒直接前処理結果をグラフ作画⇒作画後に必要に合わせてデータをcsv出力
っていう流れの方が良くね?
書き込んでから読み込む必要性が全く分からん
320316
垢版 |
2021/07/09(金) 08:30:32.97ID:6wIK8ZSE
>Pythonで前処理⇒直接前処理結果をグラフ作画
前処理では複数行複数列の数字(時間と温度です)を積み上げていくので、
その前処理結果のgnuplotへの渡し方としてcsvが適当かな、と思ったためです。

それとも、そもそもpythonスクリプトとしては前処理のアウトプットだけでexitし、
gnuplotはOS側シェルで普通に動かして前処理結果を使えば?という意味だとすれば、
今回はpythonスクリプト内でgnuplotを動かしたいです。
2021/07/09(金) 08:51:54.66ID:sj/mydTS
データが来るたびにファイルに追記していく(writeのあとにflush)
gnuplotは別に起動して毎秒ファイルを読み直す
と分けるのがよさそうに見える
2021/07/09(金) 09:04:12.08ID:2AR12dC9
>>320
>その前処理結果のgnuplotへの渡し方としてcsvが適当かな、と思ったためです
gunplotのマニュアル確認したけど、それなら素直にCSVファイルとして書き出さないと無理じゃないか?

大学か会社の都合か分からんけど
Pythonで素直に一連の動作をさせるなら
matplotlibの方がよっぽど楽だけど、それだとダメなんだよな
323316
垢版 |
2021/07/09(金) 09:08:57.43ID:6wIK8ZSE
もともとはシェルスクリプトでそんな感じでやっていて、
拾ってきたpythonで温度を測定し、結果を/tmp/temp.csvに書いてそれをgnuplotに読ませてました。
実はgnuplotが書いたグラフ(png)をまた(拾ってきた)pythonでOLEDに描画するという後処理もあって、
全工程で1秒ちょっとかかってました。
そこで、おっしゃ自前でpythonの1スクリプト化して高速化や!コピペマンから脱却するやでー!
という素人考えで今に至っています。
pythonの1スクリプトで、>>316に書いたtest1の方法(中間ファイル書く)でも
シェルスクリプト版の倍は速く動いてるので、あとはStringIOさえできれば…と思ってました。

何分素人なのでそもそもの考え方が間違ってるところもあるとは思いますが、
なぜそう思うに至ったか、という話でした。
324316
垢版 |
2021/07/09(金) 09:14:25.66ID:6wIK8ZSE
>>322
やっぱ実体としてのcsvファイルがないとダメですかね…ありがとうございます。

matplotlibはグラフ描くがgnuplotより難しそうだから見なかったことにしてました。
いい機会だから、もう一度調べてチャレンジしてみます。
2021/07/09(金) 09:20:09.59ID:2AR12dC9
>>323
すげえ面倒な方法で見える化やってるなwwwwww
慣れたらmatplotlibも描くの簡単だぞ、Pandasとかnumpyとの相性も良いし

ただ根本的な所で言えば、既存の見える化フローが結構ヤバイな
(グラフ画像をOLEDで映し出すっていうのが衝撃だわ)

抜本的に改善したいなら
Pythonでデータ処理⇒データベースに書き込み⇒データ系の見える化ツール
っていうのが理想形だな
TableauとかPower BIみたいなツール使うと見やすくなる(有償だけど)
無償ツールなら英語だけどGrafanaとかかな?
326316
垢版 |
2021/07/09(金) 09:39:34.13ID:6wIK8ZSE
>>325
今回はラズパイローカルでグラフを物理画面に即描画したいんですよね。
趣味の焙煎釜の温度変化を熱電対で計測し、手元でリアルタイムにグラフ描画したい、
そして記録をcsvに残したい、というのが目的です。
今は単機能の熱電対プローブでやっていて、温度変化が全くわからないので。

そこでまずはアリエクで300円しないOLEDを買ってラズパイに繋いで
gnuplotのpngをSPI接続のoledに送り出し続けるという形にしました。
ほんとはpythonからoledのライブラリとか使って直接描画とかもできるのかもしれませんが、
matplotlibともどもフタをしてました…
これがうまくいったら、OLEDやめてラズパイケース一体液晶にしても良いかなとは思っています。

GrafanaやPowerBIは別件で使ったこともあって、後分析には良いですよね。
2021/07/09(金) 09:47:38.88ID:2AR12dC9
>>326
>今回はラズパイローカルでグラフを物理画面に即描画したいんですよね。
あーなるほど、そういう使い方もあるのか……俺の知識不足だったすまん
ただ結局グラフのpng画像を生成出来れば問題なさそうだし、matplotlibの差し替えが無難な気はするな
2021/07/09(金) 23:58:06.76ID:dI9qqvw1
int型の足し算ではintクラスの持っている__add__メソッドが暗黙的に呼び出されていると思います。
ですが、
1.__add__(2)
のようにすると1+2が実行されず構文エラーになります。これは何故でしょうか?

str型の場合は問題なく実行され、以下の場合"aabb"が返ってきます。
"aa".__add__("bb")
2021/07/10(土) 00:16:00.86ID:8UKJFvZ/
詳しくないが 1. が小数になるのが原因だろう
(1).__add__(2)
とか
1..__add__(2)
ならエラーにならない
2021/07/10(土) 00:16:24.03ID:Rm9mfcPV
1.x(float)か1のメソッドなのか決まらないから
1.1.__add__とかはメソッドなのが分かるから通る
2021/07/10(土) 00:59:10.02ID:MSe133Oz
>>329
>>330
納得しました!
ありがとうございます
2021/07/10(土) 10:33:46.40ID:chyfa+iT
Python3.7で、pdbのtrace中とそれ以外でプログラムの挙動が異なるという問題に悩んでいます。
■現象
PySimpleGUIのpng画像をwhile True:で延々と更新し続ける処理が、
・pdb set_trace中は想定通りに画像が更新され続ける(ただし途中でpdbが止まる)
・traceを外すとそもそも画像が表示されない

■処理
"conv_image"を別関数で更新し続け、
このwindow更新行をwhileで回すだけの処理です。
window['-image-'].update(data=get_img_data(conv_image))

■pdbが止まる件
不思議なのは、通常pdbはデバッグ中に一度nで次に進むと、次行からはEnterだけでエラーのない限り進みますよね。
でもEnter押しっぱなしにしてると、この行でエラーの表示もなくpdbがいったん止まります。
nを押すと進み、画像が更新されます。
そこが問題のポイントなのかなと思いますが、それ以上の手がかりがありません。
2021/07/10(土) 10:43:05.45ID:lk+ovMEl
>>332
再現できる最小限のコードを提示しましょう
2021/07/10(土) 11:13:10.52ID:Ai3MLyk0
> get_img_data(conv_image)
この計算は一回でいいんじゃ
2021/07/10(土) 13:30:27.85ID:nAGZi/ZP
GUIがメッセージを処理する時間がねえんじゃねえの
336332
垢版 |
2021/07/10(土) 14:33:07.51ID:chyfa+iT
>>333
すみませんでした…
ttps://dpaste.com/AQL5WPNUS
手元のraspbian buster python3.7.3では、ここまで削っても
後ろから4行目のpdb.set_trace()有無で、>>332に書いた現象が出ます。

>>334
window['-image-'].update(data=conv_image)
こうでいいんじゃないの?と思って最初はこう書いてたんですが、
BytesIOが生で見えてるのか何なのか、"TypeError: 'int' object is not callable"エラーが出ます。
ググったところ、get_img_data関数(割と一般的らしい)を使えとあったのでそのようにしたところ、表示できるようになりました。

>>335
試しに2ヶ所あるwindow.updateの直後にtime.sleep(1)を入れてみたんですが、変化なしでした。
2021/07/10(土) 16:36:24.47ID:c5RJ/qlV
>>336
PySimpleGUIでメッセージ処理させるのはwindow.read()
メッセージ無くても回したいならtimeoutを指定する
2021/07/10(土) 18:01:51.33ID:lk+ovMEl
window.read()してないのでtk.update()が呼ばれず画面が更新されない
window.TKroot.update()を呼べば画面が更新されるが
直接呼ばずにwindow.read()を使ってメッセージループを作るほうがいい

デバッグセッション時はそれだと使いにくいから何か対処されてるっぽい
339332
垢版 |
2021/07/10(土) 18:38:29.97ID:chyfa+iT
ありがとうございます。なるほど…!
どこかでサンプルプログラムをコピペしつつ、ボタンはどうでもいいから
とりあえず画像表示ループだけ回そうと適当かつ中途半場に行を削除してしまったので、
その結果イベント処理が進まない状態ということですね。
すごく良くわかりました。
どう処理するかよく考えて書き直してみます。
340デフォルトの名無しさん
垢版 |
2021/07/11(日) 08:30:07.56ID:k6naGpL9
ユニークな長いリスト src があって
おのれはユニークだけどsrcと重複しうるリスト reqがある
reqの要素がひとつでもsrcにあれば云々したい
速いのを探しています。外部ライブラリは使えない

test = set(req)
bool([i for i in req if i in test])
?
2021/07/11(日) 09:23:01.16ID:FD6lxZ3g
any()かfor-loopのearly breakを使う

srcは長くて固定的、reqは短くて毎回変わるなら
srcのほうをsetにして管理したほうがいい
342デフォルトの名無しさん
垢版 |
2021/07/11(日) 10:48:10.63ID:k6naGpL9
いや冷静に考えたら
フツーにset(src)&set(req)か
343デフォルトの名無しさん
垢版 |
2021/07/11(日) 10:50:02.39ID:BLRKNf/m
共通要素を全て調べ上げる必要が無いなら>>341の方が速いな
2021/07/11(日) 11:14:07.88ID:k3ZSGeVZ
>>340
速いかどうかは知らん
not set(src).isdisjoin(set(req))
345デフォルトの名無しさん
垢版 |
2021/07/11(日) 12:26:28.31ID:k6naGpL9
>>341
set(src10万)
req300 重複0〜5
ではany()と&はほぼ誤差
bool([i in set])がわずかに遅い感じでした
センキュー
2021/07/11(日) 12:57:32.61ID:xAgoNPlJ
>>258
分かりやすい
2021/07/11(日) 19:05:49.41ID:akfEDp81
違和感というのは[]を()のように捉えてるから
リストや文字列に対する*は数学の掛け算とは無関係
要素数を増やせという機能


> [3*3] -> [9]
数学の掛け算
> [3]*3 -> [3, 3, 3]
リスト内の要素3を数で3つに増やせ
> [[3*3]] -> [[9]]
掛け算
> [[3]*3] -> [[3, 3, 3]]
内側のリストの要素3の数を3つに増やせ
> [[3]]*3 -> [[3], [3], [3]]
リストの要素[3]を3つに増やせ
2021/07/11(日) 20:54:53.44ID:yIl0mON7
どうした急に
2021/07/11(日) 21:15:21.80ID:BeeJLMuH
発作よ
お薬を忘れたみたいね
2021/07/12(月) 00:05:06.94ID:hfOyhNhX
サブクラスからスーパークラスのメソッドを呼び出す場合、次の@とAは同じ意味ですか?
同じならどちらで書いた方がいいとかありますか?

class MyClass1:
def __init__(self, name):
self.name = name

class MyClass2(MyClass1):
def __init__(self, name):
@ super().__init__(name)
A MyClass1.__init__(self, name)
351デフォルトの名無しさん
垢版 |
2021/07/12(月) 00:29:53.14ID:2Zpr4/N8
わざわざsuper というキーワードが用意されているのだから使わない理由ないだろ
クラス名を変更した際の影響範囲を考えてみよう
2021/07/12(月) 11:10:07.04ID:4WArcuIG
>>350
その例だと同じだけど複数から継承するようなクラスを使う場合は
super()が返すものが普通に想像するものとは違ってくるケースもあるので注意が必要
https://fuhm.net/super-harmful/
2021/07/12(月) 19:50:10.58ID:QV5M7VnV
>>347
数学と無関係ではないよ、加群としてとらえても矛盾のない演算になってるでしょ
2021/07/12(月) 20:27:18.44ID:HIUYKm1A
それは*3が同じものを3つ足し合わせなさいという
常識的な意味合いをわかりやすさのために利用してるだけで
数学的なことなら割り算もあるでしょ
2021/07/12(月) 21:40:52.58ID:4WArcuIG
常識的な意味合いかぁ・・・
演算子オーバーロードの悪い見本にしか見えない
2021/07/13(火) 01:00:18.86ID:o9TqNFAF
>>351
>>352
ありがとうございました
ある本に説明もなく両方の記載があったので悩んでました
この機会に多重継承も勉強しようと思います
2021/07/13(火) 05:15:40.15ID:eWSxSU0S
数学っぽくやるなら
[3]*3->[9]
[1, 2]*3->[3, 6]
のほうがより直感的だった気はする
2021/07/13(火) 05:42:16.34ID:QsXB5/qu
numpyはそうなってるね
359デフォルトの名無しさん
垢版 |
2021/07/13(火) 11:39:29.89ID:Oq4/PEVt
pythonバージョン3.8.1で次のようなことをしようとしていますが、関数の配置に困っています。

次にするイベントを抽選する

イベントを実行する

イベント終了後にイベント抽選へ戻る

しかし、これだとイベントを抽選する関数をイベントの関数より上に置くとイベント抽選の関数がイベントの関数を認識してくれず、
下に置くと、各イベントの関数がイベント抽選の関数を認識してくれません。
なんとか動かす方法はないものでしょうか?
360デフォルトの名無しさん
垢版 |
2021/07/13(火) 11:45:58.98ID:uAPVX+Xy
5chのこの板のAndroid版のスレタイトル一覧を取得したいのですが、スレタイトル部分だけ抜けてしまいます。
htmlを見ると、スレタイトル部分はjava scriptを呼び出して(?)表示しているようです。
このような別から呼び出す仕組みの検索語だけでも知りたいです。

実行環境はWindows10のcolabです。
何卒よろしくお願いします。

以下がソースとhtml抜粋です。

https://pastebin.com/dq4FFsM3
2021/07/13(火) 11:52:22.48ID:eWSxSU0S
相互参照は常に避けるよう心がけるべき。
回避する方法はいろいろあるけど、
イベント抽選関数はイベントの関数に引数として渡してあげるとか、
イベントの関数はすべて同じ引数、戻り値にしておいて、イベント抽選システムへ予め登録しておく方式にするとか
2021/07/13(火) 11:55:28.21ID:I5G4+d/9
知らんけどmain関数のなかにwhile True: 抽選関数()
みたいにしてループさせて抽選されたイベント自体は抽選関数を呼ばなければいいだけじゃないの
2021/07/13(火) 11:59:46.95ID:0QNuXsy/
ttps://mevius.5ch.net/tech/subject.txt
> スレタイトル一覧を取得したい
> このような別から呼び出す仕組みの検索語だけでも知りたい
どっち?
スレタイ取得ならsubject.txt読ませればいいじゃん
わざわざしかもitestのhtmlをスクレイピングする理由あるの?
364デフォルトの名無しさん
垢版 |
2021/07/13(火) 12:22:40.44ID:WUJYnH4r
>>354-355
*3がどう展開されるかより
もっと深刻な問題は
[[?]]*Nの内側の[?]はコピーされていないということだろ
365デフォルトの名無しさん
垢版 |
2021/07/13(火) 12:24:59.10ID:WUJYnH4r
>>359
前方参照でぐぐれ
366デフォルトの名無しさん
垢版 |
2021/07/13(火) 12:26:33.03ID:WUJYnH4r
>>360
5chはスクレイピング禁止
2021/07/13(火) 12:31:27.78ID:QsXB5/qu
>>359
イベントの関数定義と、抽選・実行をする処理とはファイルを分けて
前者を後者のファイルでimportして使う

1ファイルでできなくもないけど
モジュール分割を早めに覚えておいたほうが散らかりにくい
2021/07/13(火) 12:43:35.25ID:dtNqNBdW
>>360
Ruby, selenium-webdriver では、
execute_script で、そのまま、JavaScript ソースコードを実行できる

ただし、5ch で頻繁にスクレイピングすると、アク禁にされるかも

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り放す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout

url = "サイトのURL"
driver.navigate.to url # 移動する

js_code = <<"EOT"
var elem = document.getElementById( 'abc' );
EOT

driver.execute_script js_code # JavaScript を実行
369368
垢版 |
2021/07/13(火) 13:03:34.95ID:dtNqNBdW
5ch は最初に、空のHTML を送ってきてから、
その後、JavaScript(Ajax)で通信して、内容を取り込む

だから単に、Ruby のNokogiri などでスクレイピングをしても、
空のHTML が取れるだけで、まだ内容が読み込まれていない

だから、15秒ぐらいスリープして、内容が読み込まれるまで待つ必要がある

または、selenium-webdriver で、ブラウザを自動操作して、
driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout
みたいに、要素が存在しない場合に、何秒待つか指定する
370359
垢版 |
2021/07/13(火) 13:16:57.35ID:Oq4/PEVt
ご回答ありがとうございました。
私があまりに初心者過ぎて、せっかくの具体的なご回答をほぼ理解できませんでしたが、
この状態を相互参照と呼ぶことが分かってようやくググることができ、
>>362さんのレスから着想を得て、main関数を作ってプログラムを全部括れば動くということが判明しました。
以上ご報告と御礼申し上げます。
371360
垢版 |
2021/07/13(火) 17:54:03.79ID:28i3hfQd
>>368
ありがとうございます。
Ajaxという技術なのですね。
webdriverでwaitを入れたところ取得できました。


>>363
すいません説明不足でした。
実はPC版はシンプルなため取得できていました。
勉強のためにAndroid版も見てみようと思いやってみたところ、取得できなかったためお聞きしました。

皆様、勉強になりました。
ありがとうございました。
2021/07/13(火) 18:33:25.76ID:KwvhlQcy
>>354
そのツッコミをするなら、群と体の違いについて理解しようか。
掛け算があっても、割り算が必ずしも定義できるとは限らない。
2021/07/13(火) 20:54:54.99ID:4WrY8hy5
何このruby基地外の自作自演
きっしょ
2021/07/15(木) 02:12:23.66ID:0WF/Cs9d
スクレイピングでrequestsで上手く取得できないサイトはSeleniumで取得するようにしてるんだけどこれにThreadPoolExecutorを使用するとしたらどういう書き方すればいいの
今までは複数のサイトのURLが入ったリストをfor文で回しつつif文でドメインが一致するかどうかでrequestsとSeleniumを使い分けていたけど非同期にするとなるとさっぱりわからん
2021/07/15(木) 12:00:52.16ID:Rdfymp1t
クラスのメンバをforループのように回す方法はないですか?イメージは、
class Test:
a=0
b=0
c=0
def _print(self):
for member in self:
print(member)

みたいなことをやりたいです。
2021/07/15(木) 12:05:26.72ID:erbvpp8v
__iter__か__getitem__を定義すればいけるはず
2021/07/15(木) 12:46:48.66ID:82cJAwkj
試してないけど、
for v in vars(self):
print(getatter(self, v))
378デフォルトの名無しさん
垢版 |
2021/07/15(木) 15:25:55.52ID:ygp86UHP
https://docs.python.org/ja/3/library/inspect.html
https://www.atmarkit.co.jp/ait/articles/1612/09/news030_3.html
379デフォルトの名無しさん
垢版 |
2021/07/15(木) 16:37:18.28ID:0u9iXN8m
そういうクラスのためのdataclass
astuple, asdictでイテレートもできる。
自分で用意できないクラスのオブジェクトの時は、dir()で列挙した後にごにょごにょしていく必要があるけど。
380デフォルトの名無しさん
垢版 |
2021/07/15(木) 16:50:42.66ID:TtIRjd2i
この度pyinstallerでどのshell環境でも動作するコマンドを作成しました。

しかし5年前くらいのIntelMacでさえ快適に動作しますが、
M1macbookではかなりもっさりして遅いのです。

これはarm64アーキテクチャのせいで遅い可能性はありますか??
またこういったケースでの改善策などありますか??
arm64用にコンパイル方法などありましたら教えてください。

コマンドはスクレイピングした結果を別ファイルに落とす
シンプルなコマンドです。
shellscriptだとちょい面倒だったのでpythonで書きました。
2021/07/15(木) 20:50:47.41ID:Rdfymp1t
ありがとうございますが、
>>377だと順番が毎回ランダムになる
>>378だと順番がアルファベット順になる?(多分)
csvの要素と対応付けたいので定義順に出てくれないと困ってしまうのです・・
>>379はバージョン不足で不可。(3.5系)
1番目が順不定になるのも多分dictの順番が保持されてないせいだと思いますしやっぱり素直にアプデですかねぇ。。。こんな仕様にしたのほんとに誰ですか
2021/07/15(木) 21:02:10.64ID:gFOIdhYR
>>374
AWS なら、Lambda, SQS などを使えば?
2021/07/15(木) 21:48:55.17ID:NjXHl1NW
>>381
for v in sorted(vars(self))でどう?
384デフォルトの名無しさん
垢版 |
2021/07/17(土) 15:16:05.35ID:eTC1af8g
定義順に出てくれないと困ってしまう

source を parse 汁
385デフォルトの名無しさん
垢版 |
2021/07/17(土) 15:16:05.74ID:eTC1af8g
定義順に出てくれないと困ってしまう

source を parse 汁
2021/07/17(土) 17:21:49.51ID:6TQt0Sye
seleniumって、3つくらいタブを開いて作業して、そのままwindowsを休止状態にして翌日立ち上げ直すと、開いていたタブを忘れるよね。

no such window とかエラー吐く
2021/07/17(土) 19:16:44.63ID:m/nn+SPH
スリープ時にsession ID無効にしてるんじゃ
仕様でそうであっても不思議ではない
388デフォルトの名無しさん
垢版 |
2021/07/18(日) 16:26:22.10ID:8WwhxwTZ
質問です。
https://docs.python.org/ja/3.10/library/typing.html
に記載の
-----
@overload
def process(response: None) -> None:
...
@overload
def process(response: int) -> tuple[int, str]:
...
@overload
def process(response: bytes) -> str:
...
def process(response):
<actual implementation>
-----
の「...」はどういう意味でしょうか。
vscodeでそのまま...で書いたら特にmypyやflake8はエラーも吐かずに、
そのまま実行できたので、何かしらの文法かとは思っていますが、検索して見つからず、passとの違いが気になりまして。
2021/07/18(日) 16:35:53.43ID:sC7cbule
インタプリタを起動して...だけ入力してEnterしてみれば分かるよ
答え言っちゃうと...はEllipsisオブジェクトを作る省略記法だな

ただし引用されてるコードはEllipsisオブジェクトを作ることを意図してる訳ではなく
単に「ここには任意の実装がありますが、説明したいことの本質とは無関係なので省略しますよ」という意味で書かれているだろう
プログラムの話というよりは国語の話だ
390デフォルトの名無しさん
垢版 |
2021/07/18(日) 16:53:56.22ID:8WwhxwTZ
>389
ちょっとEllipsisでしらべてみましたが、オブジェクトを返すんですね。
理解しました、ありがとうございました。
391デフォルトの名無しさん
垢版 |
2021/07/18(日) 17:44:08.93ID:UkQCwsAx
お聞きしたいことがあります。変数の定義に1以上□以下。とやりたいのですが、□にまた別の変数を入れたいのです。この場合どうすればいいのでしょう。別の変数はちゃんと整数で定義してあります。
そして、その定義内の全部の数字を一つずつ代入して計算する。というのもやりたいです。立式はもちろんできるんですけど、プログラムに反映させるのがどうにも難しくて。調べてもよくわからないのです。恐らく調べ方が悪いだけなのかもしれませんが。。よろしくお願いします。
392デフォルトの名無しさん
垢版 |
2021/07/18(日) 18:00:24.58ID:jPlpwmso
numpy 使え
linspec
2021/07/18(日) 18:07:48.06ID:aN3/9svp
>>391
foo = range(1, x + 1)
394デフォルトの名無しさん
垢版 |
2021/07/18(日) 18:19:36.49ID:UkQCwsAx
>>392>>393
申し訳ないです。numpyは入れましたが分かりませぬ。そして393さんの式が何を意味してるのかも分かりません。
当方中学生なもので。プログラミングの知識が皆無と言って良いほどなんです。すみません
2021/07/18(日) 18:54:09.31ID:Xl9gD1Ws
>>394
中学生が5chのプログラム板に流れ着くっていうのも凄いな

簡単なサンプルコードをとりあえず出しておくけど
入門書とかまだやってないなら、一旦そっちやった方が良いかもな
(質問の内容ぐらいだったら、ライブラリとかは不要で基本を組み合わせるだけで出来る)
https://ideone.com/q7v4da
2021/07/18(日) 19:40:52.85ID:gLxBARQW
半年ROMって無さそう
2021/07/18(日) 20:14:56.68ID:KenitbzS
s=15
list1=range(1,s+1)
map(f,list1)
398デフォルトの名無しさん
垢版 |
2021/07/20(火) 09:21:51.96ID:2ecX9oPq
自称中学生のおっさん臭プンプン投稿
399デフォルトの名無しさん
垢版 |
2021/07/20(火) 09:31:55.38ID:2ecX9oPq
>>391
>>394
import numpy as np
s = 15
list1 = np.linspace(1, s, s)
print(np.power(2, list1).astype(np.int))
400デフォルトの名無しさん
垢版 |
2021/07/20(火) 12:30:08.20ID:Mdyk1C1W
命名規則スレに書くか迷ったんだけどとりあえずこっちで…

tkinterでラベルとかボタン複数作るとき
各々text埋め込むんじゃなくて、名前テーブル参照するようにしたい
このときたとえば
self.x_btn = tk.Button(root, text=self.db.name[0])
てすると、これインデックスがマジックナンバー化すると思うんだけど
通常どのような呼び出し設計にするのですか?
self.db.name["ウィジェット名"]とか?
2021/07/20(火) 18:51:14.03ID:zCG2UJGN
通常はリテラルで直接textに代入して
数が多かったらwidth等と合わせてリスト化して
for i inで回すかな
2021/07/20(火) 19:37:39.84ID:b4jpo/5+
テーブルにする必要があるのか?
直でいい気もするけど、それが嫌ならどこかに
BUTTON_NAME_XXX = "XXXのボタン名"
・・・
とか羅列していってそこ参照して終わり
テキスト以外にフォントや背景色とか配置情報まで全部まとめてdbのように管理して自動配置したいってなら分からなくもないけど
テキストだけならいらない、やってる感出るだけで意味があまりない
403デフォルトの名無しさん
垢版 |
2021/07/20(火) 21:14:39.90ID:Mdyk1C1W
あー定数のようなものにして
テーブル相当の場所に列挙しとく感じですね
なるほど
2021/07/24(土) 07:46:47.19ID:7TtC0ooc
requestsでtry:except:で特に問題なく使ってたけど
なぜかプログラムが止まることがあってどこでループでもしてるのかと探してたらrequestsのタイムアウトが原因だった
今までのサイトでtimeout設定なしで止まったことなかったので新たな発見だった
405デフォルトの名無しさん
垢版 |
2021/07/24(土) 14:55:00.78ID:hiQTHxs1
Scrapyくわしい人おるか?
Spiderにインスタンス変数持たせたいんだけど
__Init__をオーバライドしてやるしかないの?
スパイだのobjectが変数持ってくれたら何でもいいんだけど
2021/07/24(土) 16:34:15.11ID:rOUP+Gb+
__init__が要件を満たさない理由を書けよ
それが明らかでないと、別の方法を提案しても同じ理由で要件を満たさないかもしれないし
そうなると二度手間だろ
407デフォルトの名無しさん
垢版 |
2021/07/24(土) 17:01:57.99ID:hiQTHxs1
>>406
単純にSuperするのがマンドクセからです
重厚なフレームワーク使ってるんだからなんか他の方法あるかなーと思いました。
Response.meta に入れたら次のResponse にも引き継げる?
2021/07/24(土) 18:51:04.23ID:LBBZ+Kmj
しょうもな
409デフォルトの名無しさん
垢版 |
2021/07/24(土) 19:18:50.35ID:vC93mKDQ
馬鹿には無理
410デフォルトの名無しさん
垢版 |
2021/07/24(土) 19:22:14.64ID:zcVNczsi
pythonしか知らないんですが
普通のアプリケーションってリリース後にパッチ当てれますよね
pythonをpyinstallerしたやつを公開したあと
パッチリリースってできるんですか?
検索ワードすら思いつかない(モンキーパッチばかりヒットする)ので、ヒントだけでもください
411デフォルトの名無しさん
垢版 |
2021/07/24(土) 19:23:20.77ID:zcVNczsi
失礼
普通のアプリケーション ☓
普通の(Cとかの)言語のアプリケーション ○
2021/07/24(土) 19:43:03.25ID:LBBZ+Kmj
可能かどうかで言えば可能だがやる価値があるかは分からんな
パッチプログラムにバイナリ差分を持たせてパッチしたいファイルに書き込めばよかろうさ
2021/07/24(土) 20:11:02.76ID:vC93mKDQ
pypi
414デフォルトの名無しさん
垢版 |
2021/07/24(土) 20:22:46.33ID:/Rm8B1//
pythonって案件ないのにどうして人気なの?
稼げない言語を極めても意味ないと思うんだけど
2021/07/24(土) 20:26:10.70ID:LBBZ+Kmj
あなたのお母さんが知ってるからお母さんに聞いてね
2021/07/24(土) 22:13:39.03ID:vC93mKDQ
五輪pig並に頭の悪い発言だな
2021/07/25(日) 00:36:03.26ID:LRlqy7mF
>>414
今時の嗜みだよ
2021/07/25(日) 08:02:14.79ID:Ie3kKwwU
>>404
Ruby, Selenium Webdriver で、ブラウザを自動操作する時には、
長めに、timeout を設定する事もある

設定しなければ確か、10秒ぐらい。
timeout 時間内に、指定した要素が取得できなければ、timeout エラー

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # default timeout

driver.navigate.to "どこかのURL" # サイトを開く
2021/07/25(日) 12:20:12.59ID:Xu27tChN
つーか普通に新版exeで置換すればいいだけでは?
パッチってあらゆるリソースケチりまくってた過去の時代の遺物って印象
現代でもメリットあるんか?
2021/07/25(日) 14:35:17.23ID:Rm4fQ9D9
>>414
Pythonはログ解析とかデータ生成とかちょっとした作業に便利だから愛用してた

ウォーターフォール型の大型案件ばかりで開発マシンも自由にできないような職場が好きなら
勉強しても無意味かもしれない
2021/07/25(日) 14:41:59.27ID:Jkp3DuuZ
訳:
おまえのような底辺ドカタには無意味
2021/07/25(日) 20:53:00.06ID:Q6f/SFdd
Pythonの言語指定の案件があるわけじゃなくて、
データ分析とかPOCとかの言語はなんでもいい案件ではPythonが使われることが多いというだけだね
ある言語、資格、ドメイン知識さえあればとりあえず食っていけるだろうという算段でプログラマーになる人には向いてないかもね
2021/07/25(日) 22:08:57.17ID:Ie3kKwwU
YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、Ruby on Rails のみ。
時給1万円のキャリアパスも、Rails → Go だけ

PHP は低時給。
Python も、Django も使われていないし、採用に無関係

Python・Julia は、MIT みたいな大学院数学科みたいな学歴で採用されるから、
プログラミング能力は無関係。
一方、ハーバードみたいな英語ができる文系は、Rails 一択

たぶん、KENTAが、PHP・Python を教えないのは転職できないから。
プログラミングを教えても、それで採用されない。
数学・統計・行列・微積分など、大学院数学科の内容だから、プログラマーじゃない

それで、転職できない文系がサロンに居座ると、サロンが崩壊するから、Railsのみ。
そもそも、KENTAは文系だし、数学を教えられないし
424423
垢版 |
2021/07/25(日) 22:12:36.27ID:Ie3kKwwU
YouTube で有名な、たにぐちまことも言ってる

Python の動画も作りたいけど、
内容が数学だから、数学の勉強しないと作れないって
2021/07/26(月) 00:02:20.16ID:RXP+GSR4
ルビおじ沸いとるw
426デフォルトの名無しさん
垢版 |
2021/07/26(月) 09:09:51.50ID:/SQnPJdV
> 数学・統計・行列・微積分など、大学院数学科の内容だから、プログラマーじゃない
工学部の1,2年の内容なんですが
427デフォルトの名無しさん
垢版 |
2021/07/26(月) 09:44:59.71ID:UUQ7nGaW
昔はその程度は高校の範囲だったな
2021/07/26(月) 10:03:01.59ID:m8NCxg12
マジで草
どんだけPythonにコンプレックスあったらこうなっちゃうんだよw
2021/07/26(月) 12:21:49.83ID:J2jKaJpL
Rubyガイジはこの板全域にいるからPythonコンプってわけでもなかろう
bashスレとかにもいる
2021/07/26(月) 15:00:18.28ID:ke3zqecq
Linux板にも出没する
2021/07/26(月) 15:52:52.35ID:m8NCxg12
ほんまに草
432デフォルトの名無しさん
垢版 |
2021/07/26(月) 17:44:49.37ID:LrxxSQmZ
>数学・統計・行列・微積分など、大学院数学科の内容だから
この発言はだいぶやばい
433デフォルトの名無しさん
垢版 |
2021/07/26(月) 20:30:55.36ID:h1Ogbfx6
自分の名前さえろくにかけないヤツが行く大学inの予感
2021/07/26(月) 21:17:24.64ID:H8mI9eGS
さすがに名前は都市伝説やろ
認可されねえよ
2021/07/26(月) 21:45:27.62ID:NcbvrVFa
>>426
工業高校だと1年で習う
つまり15歳なら理解できる
2021/07/26(月) 22:23:25.53ID:B6RhvbgV
>>435
工業高校1年だと旋盤とNCとラグビー
だと思っていた

BGM はボニー・タイラーのヒーローで
2021/07/27(火) 04:38:18.52ID:df0C1Duv
兄が疲〜労っ!
438デフォルトの名無しさん
垢版 |
2021/07/27(火) 07:07:18.65ID:ootWstZS
windows10でtkinterを使ってclipboard.append()したやつが
tkinter上で手動コピペしないと外部に持ち出せない(空になる)やつ
なにかうまい解決法ありませんか?
439デフォルトの名無しさん
垢版 |
2021/07/27(火) 07:09:13.12ID:ootWstZS
できればpyperclipとかの外部ライブラリなしで…
2021/07/27(火) 14:17:43.09ID:vpkKcN5c
rubyガイジは中卒だから高校の学習範囲を知らなくても仕方ない
2021/07/27(火) 18:54:38.92ID:qlBpKhDw
>>434
必要な数だけ栄養学生を雇っつるよ
2021/07/28(水) 01:27:20.65ID:Ky1rxZdm
>>436
花園目指す系は東大阪かな
あの辺は北河内あたりの中学ラグビー強いから高校が強いだけであって
高校の手柄だっていうのはちょっと違う気がするよ
公立中学でも元全日本の選手が教えてたり、私立は中高一貫でラグビー部を育ててるチート状態だからね

NC旋盤は機械科だろうね
NC旋盤ってやる内容はほぼプログラマなのにあまりプログラマの選択肢だと思われてないね

工業高校って情報系や電気電子系はひたすら数学、法律、プロジェクト管理、あとは専門分野の実習だよ
英語や一般科目をほとんどやらないのと専門分野の科目数が少ない以外は大学とほとんど内容一緒
難易度に関しては全く一緒だよ
もちろん学校によって差はあるんだろうけどね
2021/07/28(水) 12:04:34.29ID:7xBR4eEd
pandasで行の範囲で重複要素を一つだけ残して削除するのってどうしたらいいの
具体的には以下のようにしたい
0, A, B, A
1, A

0, A, B
1, A
2021/07/28(水) 12:44:23.48ID:SAGnL8kO
>>443
各行の列数が違うデータは扱えないので
削除じゃなくNAとかの別の値に置き換える
2021/07/28(水) 12:59:18.45ID:7xBR4eEd
あ、カンマは省いてるだけで揃ってます
2021/07/28(水) 13:15:09.86ID:7xBR4eEd
自決
2021/07/28(水) 13:58:10.87ID:1o5b32fv
答えてくれた人が居るんだから何が原因でどう解決したかくらい書いてから逝ってほしい
2021/07/28(水) 14:13:33.40ID:DsKbXt6n
>>422
>データ分析とかPOCとかの言語はなんでもいい案件

こういうのは場末の新規極小案件しかないやろ
一括受託100万くらいの
2021/07/28(水) 14:17:00.06ID:DsKbXt6n
>>442
>NC旋盤ってやる内容はほぼプログラマなのに

プログラムっちゃープログラムだが、あの程度ができるからといって
プログラマを名乗るのも恥ずかしいからなぁ
2021/07/29(木) 13:34:17.35ID:AbVaSjDV
タプルを辞書のキーにするとメモリを食いますか?
アンダーバーでタプルの要素を連結して1次元の文字列にした方がマシですか?
2021/07/29(木) 14:12:40.37ID:J3IrN4Ey
>>450
とりあえず試すといいよ
IPythonやJupyterで%memitや%mprunすればすぐ分かるので
2021/07/29(木) 14:39:04.83ID:e4Dn0RFm
かわりましぇーんでした!
2021/07/29(木) 17:14:46.30ID:QD9Lxy/Q
タプルをキーにする
内部ではタプルをそのまま文字列に変換しているだけなのでは?
454450
垢版 |
2021/07/29(木) 17:20:06.10ID:pNM23k+3
ID変わったので改めてご報告します。
メモリを確認しましたがタプルでも文字列でもかわりませんでした。
2021/07/29(木) 17:41:54.14ID:nJwJ/p+N
>>448
そりゃ市場に出回ってるのはそういうのだろうけどね、一旦上流と繋がっちゃえば関係ないね
手段はなんでもいいから問題が解決できる人材が求められているので
2021/07/29(木) 18:46:36.83ID:8SBcxtDC
プログラム内で安易にprint出力すると
シェルで実行して標準出力で受け取りたい場合に
関係ないprint出力まででてきてしまうのですが
そういうときはファイル出力すればいいのでしょうか?
それとも標準出力専用のprint的なのがあるのでしょうか
457デフォルトの名無しさん
垢版 |
2021/07/29(木) 19:05:55.02ID:3asw//Zv
標準エラー出力使え
2021/07/29(木) 19:06:32.21ID:200xoZ3M
Pythonを1行しか実行できない環境で使いたいです。
以下のコードを1行にまとめたいのですが、どうしたらできますか?

from socket import socket, AF_INET, SOCK_STREAM
with socket(AF_INET, SOCK_STREAM) as s:
  s.connect(("192.168.1.15", 49994))
  s.sendall("test".encode())


with以外の部分は、以下のようにセミコロンで区切れば良いと思うのですが
withと改行&インデントをどうやって1行で扱えば良いか分かりません。

from socket import socket, AF_INET, SOCK_STREAM;s.connect(("192.168.1.15", 49994));s.sendall("test".encode());
459デフォルトの名無しさん
垢版 |
2021/07/29(木) 19:09:27.00ID:3asw//Zv
exec(“from socket … \nwith … as s:\n\ts.connect….”)
2021/07/29(木) 21:18:08.02ID:200xoZ3M
>>459
ありがとうございます。
ちなみに、socketでwithを使う場合ってs.close()の処理をしてくれるというだけと考えて良いのでしょうか?

>>458と以下のコードは、やっていることは完全に同じですか?

rom socket import socket, AF_INET, SOCK_STREAM
s = socket(AF_INET, SOCK_STREAM)
s.connect(("192.168.1.15", 49994))
s.sendall("test".encode())
s.close
2021/07/29(木) 21:38:24.80ID:J3IrN4Ey
>>460
connectやsendallでエラーが出てもcloseが呼ばれるようにtry~finallyで括れば同じ
2021/07/29(木) 21:53:02.31ID:200xoZ3M
>>461
ありがとうございます!
なぜかwithが使えない環境だったみたいなのでこっちで試してみようと思います
463デフォルトの名無しさん
垢版 |
2021/07/30(金) 14:15:53.69ID:PlrV13FK
超超超初心者です
Youtubeの動画のダウンロードだけで使用していましたが
いつからかエラーになって使えなくなりました。

再インストールし直して
Python 3.9.6とpytube入れましたがやはり同じエラーが出てしまいます。
pipバージョン21.1.3

from pytube import YouTube
yt = YouTube('動画のurl')
s = yt.streams.all() ←ここでenter押すとエラーになってしまいます
for i in s:
print (i)
download_directory = "/home/????/video"
yt.streams.get_by_itag('????').download( download_directory )
(動画、音声をそれぞれダウンロードし後で合成する感じです)
エラー文の一部です
File "C:\Users\????\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 641, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found
情報が少なかったでしょうか?
他にも使用するプログラムもありましたか?
pipバージョンを21.2.1にしたらいいのかなぁ・・
何が悪いのかがまるで分かりません
どうか皆様のお知恵をお貸し下さい、よろしくおねがい致します。
2021/07/30(金) 14:21:13.22ID:PogAvYGI
こういうのはYoutube側の仕様変更で壊れて、なんとか直しての繰り返しだよ
バグ報告があるみたいだよhttps://github.com/pytube/pytube/issues/1060
2021/07/30(金) 14:50:43.78ID:n/UloM9p
「http 404 エラー」で検索!

HTTP Error 404 は、そのURL が存在しない
466デフォルトの名無しさん
垢版 |
2021/07/30(金) 17:21:42.31ID:ULQnvNeP
先生pythubeはゴミだからyoutube-dlを使いなさいと1000万回言いました!
2021/07/30(金) 18:18:30.97ID:7AkGA5GJ
スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか?
2021/07/30(金) 18:54:04.12ID:Yw68dT3H
またか…
2021/07/30(金) 19:01:44.29ID:sy6E+yQE
スクレイピングをしかける側なのに、セキュリティ対策ってどういうこと?
2021/07/30(金) 19:05:58.12ID:XNMtwXjX
Windows10 64bit/Python3.9.6/VS Codeから実行

要点がうまくまとめられず長文になってしまい申し訳有りません。
任意の起動中のアプリケーションをアクティブ化し、最前面に表示したいです。

まず、こちらのサイトを参考に
【Python】ウィンドウをアプリ名指定しアクティブ切り替えする簡単な方法
https://pentan.net/python-windowactive/
下記の通り記述しました。
https://techiedelight.com/compiler/?OlKU
実行すると、メモ帳を最小化していない限りは望んだ結果が得られました。

ここから更に、"○○○ -- Mozilla Firefox"のような、可変部を含むウィンドウタイトルについて、
可変部が変わっても動作するようにしたいので、
ウィンドウタイトルに"Mozilla Firefox"を含むアプリケーションを
アクティブ化する、という処理になるかなと思い
ググって出てきたこちらの記事を参考に
Python - ctypes.windll.user32.FindWindowWでフルネームではなく名前の部分一致でウインドウを検索したい。|teratail
https://teratail.com/questions/157495
下記の通り記述しました。
https://techiedelight.com/compiler/?wciE
実行すると、サイトでも書かれている通りエラーが発生し、
また、指定する文字列によっては(Firefox、Kindleなど)
アクティブ化しないこともありました。

何が原因でエラーになっているのか解りません。
ここからどうすれば目的の動作が行えるようになるでしょうか。
また、teratailで提示されていた方法以外でも何かありましたらご教示ください。
471デフォルトの名無しさん
垢版 |
2021/07/30(金) 19:22:19.78ID:PlrV13FK
超超初心者です
464さん 465さん 466さん
教えてくださってありがとうございました。
色々難しいんですねぇ・・
youtube-dlっていうの調べてみて
使えたらいいなって思います。

皆様ありがとうございました!
2021/07/30(金) 19:29:01.40ID:cG1LCTVi
>>467
取ってきたデータの検証方法を学んでください
うちのサイトだと、初心者丸出しのクロールにはプロバイダ経由の警告、本格的なのは嘘のデータを返してるんですけど、後者はなかなか気がついてもらえない。
半年以上、同じやつからと思われるアクセスが続くとホント嫌になる。
2021/07/30(金) 19:32:21.56ID:sy6E+yQE
>>470
falseをtrueに変えて、全列挙してみては?
474デフォルトの名無しさん
垢版 |
2021/07/30(金) 19:53:21.30ID:ULQnvNeP
>>471
あなたは多分、 qiitaにある「youtube-dlでダウンロードソフト作ってみた」を
ダウンロードして使うだけで満たされるのではないか
2021/07/30(金) 21:21:02.94ID:XNMtwXjX
>>473
できました!ありがとうございます!
コールバック関数がまだうまく理解できないのですが、これを元にやりたい操作をできるよう改修してみます。
ありがとうございました!
2021/07/31(土) 10:58:14.89ID:c5O8qSbM
数日前からPythonを学習し始めたけど、このプログラムってベーシック語言みたいだね
2021/07/31(土) 11:37:59.30ID:UYu1kC2O
どこが?
2021/07/31(土) 12:56:45.00ID:9kQIyyPT
インタープリター
2021/07/31(土) 13:28:23.04ID:fR9gRit1
即時実行出来るところ、くらいかな
2021/07/31(土) 16:10:09.30ID:Lb6WwJIX
足し算が+で引き算が-のところとか
481デフォルトの名無しさん
垢版 |
2021/07/31(土) 21:00:00.51ID:llJ9dkNq
>>476
本当に学習し始めたばかりなんだね
2021/08/01(日) 00:30:09.00ID:yeJVBD9n
コンパイルせずに動かせるのは便利
483デフォルトの名無しさん
垢版 |
2021/08/01(日) 06:31:19.80ID:zyctpkQA
each_names = ([f'"{self.tree.item(iid)["text"]}",' for iid in self.tree.get_children(_id)] for _id in self.tree.selection())

読みづらいですか?
どう書いたらサイコー?

やっぱり丁寧な方が強いですか
each = []
for _id in self.tree.selection():
__names = []
__for iid in self.tree.get_children(_id):
____name = self.tree.item(iid)['text'] # string
____names.append(f'"{name}",') # to csv
__each.append(names)
2021/08/01(日) 12:06:41.70ID:SN6JurZf
>>483
>____names.append(f'"{name}",') # to csv
カンマを付け足す意味がよくわからないけど
とりあえずリストを生成する処理とリストをCSVにする処理は分けたほうがいいと思う

あと今のコードだと
['Foo', 'Bar', 'Baz', 'Qux’]みたいなリストじゃなくて
[['"Foo",', '"Bar",'], [], [], ['"Baz",', '"Qux”,’]]みたいなリストになるけど
これが本当に欲しい形?
485デフォルトの名無しさん
垢版 |
2021/08/01(日) 12:50:26.40ID:zyctpkQA
>>484
なるほど
リストのリストなのは問題ないです
treeはフォルダ−ファイル群の一覧になってて
親リストがカラム、子リストがフォルダ、値がファイルの予定です

カンマは他のカラムを処理したのと連結する用だったんですがCSV変換する関数作ってそっちでやりますね
486デフォルトの名無しさん
垢版 |
2021/08/01(日) 12:54:09.13ID:zyctpkQA
なんか長すぎるのはよくないと聞いたんですが
(個人的には)折っても逆に見づらいし、丁寧に書いても冗長だし と思って聞いてみました
2021/08/01(日) 14:11:59.19ID:RrS7g+U3
正しいpythonってなんなんですか?
正しくないpythonがあるのですか?
https://ascii.jp/elem/000/004/064/4064341/
488デフォルトの名無しさん
垢版 |
2021/08/01(日) 18:35:11.06ID:/PJrMDbF
先日に書き込みした超超初心者です
教えてくださったyoutube-dlが無事に使えるようになりました。
ffmpegが難しいですけれど色々と試してみたいと思います。
また何かありましたら、よろしくおねがい致します。
2021/08/01(日) 18:46:48.85ID:nqygO9fQ
いやどす
2021/08/02(月) 11:26:05.66ID:NrUL+nG3
ごめん、この選択ソートのプログラムで
出力 1 2 3 になる理由を行ごとに分かりやすく解説してくれると助かりまっす

https://i.imgur.com/d5ppkHW.jpg

先頭の2を隣の3と比較して段々小さいのを前に持ってくのはわかるけど、プログラム構成を理解し損ねてて困ってる
2021/08/02(月) 11:31:48.41ID:vVi2V/R1
せめてそれぐらい入力してアップしろよ
2021/08/02(月) 11:49:39.33ID:0Fs630bp
>>490
1行目:配列の要素の区切り文字がコンマじゃなくピリオドになってる
2行目:小文字のrがデカい
3行目:小文字のmがデカい
4行目:小文字のrがデカい
8行目:角括弧の角度が45°になってる
9行目:角括弧が山括弧みたいになってる
10行目:小文字のrがデカすぎる
2021/08/02(月) 12:07:32.42ID:7hVL2dqc
>>490
ざっくりと説明するなら
@リストの中から最小の値を探して先頭に移動させる
[3.1,2])なら[1,3,2]になる
A@で最小値は決まったから、それ以外の所で最小値を探して、
  また位置を移動させる
 (ようは残った3,2で小さい方を選んで、1は動かさないように2を先頭の方に持ってくる)


で、こういうアルゴリズムの奴は実際の動き見ない
絶対に理解できないから、
大人しくアルゴリズム図鑑のアプリ(370円)を買うか
その金も無いなら図解が乗ってる解説を探せ
https://www.codereading.com/algo_and_ds/algo/selection_sort.html
2021/08/02(月) 12:24:25.25ID:lJJomUVT
>>490
youtubeで「selection sort」で検索
アニメーションで解説してくれてる動画がたくさんあるからそれを見るといい
プログラムの動きで理解したければ最初はprint debugで

for i in range(len(a)-1):
__print(i, a) # <― print結果を見れば各イテレーションで配列aのどの値とどの値がswapされてるかわかる
__mini = i
2021/08/02(月) 12:33:54.89ID:WC1B7KX+
配列を入れ換えて1 2 3 になる仕組みを聞いてるのだが
「検索しろ」とか最低な答えをありがとう、あんたらに聞いた俺が間違ってたわ
2021/08/02(月) 13:05:43.62ID:jY8DN460
>>495
その通り!
ここにはバカしかいない
rubyスレなら懇切丁寧に教えてもらえるYO!
2021/08/02(月) 13:38:20.68ID:t5Br6g5D
Debian strechのpython 3.5.3で

from signal import *
print(sigwait([SIGINT, SIGTERM]))

という2行のスクリプトを走らせました
フォアグラウンドで走らせてCntl-Cを押す あるいは バックグランドに回してkill -INTする などでは、送ったシグナルの番号が表示されます
が、kill -TERMではシグナル番号は出てこず「Terminated」とだけ表示されます
SIGINTとSIGTERMで、どうしてこのような違いが出るのでしょう?
2021/08/02(月) 14:22:28.97ID:9w/UXIkk
sigwaitを使う前にpthread_sigmaskでブロックしないといけない
2021/08/02(月) 15:27:23.53ID:t5Br6g5D
>>498
早速ありがとうございます
教えていただいたとおり、sigwait()の前に

pthread_sigmask(SIG_BLOCK, [SIGTERM])

を入れたら、期待通りの動作となりました。SIGINTとSIGTERMの違いについてはまたこれから調べようと思いますが
とりあえずやりたいこと自体は無事に達成できました。ありがとうございます
2021/08/02(月) 15:30:02.82ID:9w/UXIkk
SIGINTもブロックしてね
2021/08/02(月) 16:33:16.98ID:t5Br6g5D
>>500
何故かブロックの対象にSIGINTを入れなくてもsigwait({SIGINT, SIGTERM})でCntl-Cやkill -INTはキャッチできるんです
で、いろいろググって見たところ、なんとなく理解できた気がします
getsignal(SIGINT)とgetsignal(SIGTERM)を比べると、前者は<built-in function default_int_handler>で後者はSIG_DFL
てことはSIGINTはPythonの内部でKeyboardInterruptをraiseする処理が予め登録されてる、つまりキャッチする用意が出来てる
しかしSIGTERMはなにもせずOS標準の動作になる、つまりキャッチする対象になってない
みたいな感じ、かと
というか、SIGPIPEとSIGINTだけは特別にハンドラを用意してるって、signalモジュールのドキュメントの最初の段落に書いてありますね
まずちゃんとドキュメントを読めよ >俺
2021/08/02(月) 17:23:26.28ID:7hVL2dqc
>>495
そりゃ仕組みもクソも何も
コード実際に書いてデバッグ実行すりゃ、どういう風に動いてるかは分かるし
それが最終的にどういう結果を目標に動いてるかを調べるもんだろ

ぶっちゃけプログラミング勉強したいなら紙ノートなんてナンセンスも良い所だぞ
実際に書いて動かして動きをちゃんと追わなきゃ絶対に理解できん
2021/08/02(月) 21:13:37.54ID:jjNS9Dca
a[0]に最小を代入して
a[1]に2番めに小さい値を代入
単純な仕組み
2021/08/02(月) 22:00:07.06ID:Mbtm4jOU
>>490
>先頭の2を隣の3と比較して段々小さいのを前に持ってくのはわかるけど...

その考え方で画像のコードを見ても理解できないと思います。

隣の値と比較して段々と前に持っていくアルゴリズムはバブルソートでは?

まずは、要素の値を交換する方法と最小値(または最大値)を探索する方法を
勉強してください。※そもそもこれがわかってないのでは?

あと、要素の値と位置の違いを理解できてますか?

i,j,miniは要素の値?それとも要素のの位置?
tmpは要素の値?それとも要素のの位置?

この辺りがわかれば、選択ソートが理解できるはずです。
2021/08/03(火) 04:07:38.41ID:9VE4GLdu
>>495
紙なら紙で1行毎に各変数がどうなってるか書いてみろっつうの
2021/08/03(火) 11:09:14.43ID:Ljn/RAt1
>>502
君が馬鹿だということは判ったからもう黙ってて
2021/08/03(火) 15:21:44.56ID:g8ZbJqDY
sklearn.linear_model.LinearRegressionのscore(x,y)で近似直線の決定係数を出そうとしたんだけど
reg=Linearregression(fit_intercept=False)
reg.fit(x,y)
print(reg.coef_)
print(reg.score(x,y))
だと明らかにおかしい数値(1以上だったりマイナスだったり)が算出されちゃって困ってます(傾きの方は問題なし)
fit_intercept=Trueで切片有りの近似直線だと恐らく正確であろう決定係数が出てくるんだけど
切片無しにして原点を通る場合だとscore()って役に立たなかったりします?
2021/08/03(火) 19:07:28.82ID:81LMxqzf
>>495
コードを打ち込んで1ステップずつ動作確認すれば理解も深まるよ
2021/08/03(火) 21:29:51.30ID:RK9HE0GW
>>506
あなたはその程度のコードも目で追って解釈できないほど頭が悪いのに、なんで実際にコード打ち込んで一行ずつ確認しないの?
2021/08/04(水) 13:50:33.89ID:mvZGqxpi
>>507
切片なしの単回帰モデルに乗らないようなデータなら、決定係数がマイナスってことはあるのでは?
2021/08/05(木) 09:01:28.24ID:EZ1IxHo4
Python2.x系の標準機能で利用できる圧縮・解凍のアルゴリズム/ライブラリってどんなものがありますか?
2021/08/05(木) 09:02:35.42ID:EZ1IxHo4
>>511
追記で、圧縮・解凍は、gzipやlzmaなどのバイト列を圧縮・解凍するもののことを示しています
2021/08/05(木) 11:35:15.31ID:waLxPY4a
https://docs.python.org/2.7/library/archiving.html
2021/08/06(金) 20:15:11.32ID:JhN11GPp
>>513
ありがとうございます。
zlibってのを使うのが楽そうですね
2021/08/06(金) 22:36:50.04ID:51YKCZf/
紙でコーディングしてる糞爺がいると聞いて来ました
2021/08/06(金) 22:42:47.66ID:XG0RyhbE
池沼に餌を与えるな糞ガキ
517デフォルトの名無しさん
垢版 |
2021/08/07(土) 00:32:45.52ID:rXkekRAR
自演乙ωωω
2021/08/09(月) 16:08:36.97ID:pUf0hcKp
紙でコーディングwww
2021/08/09(月) 17:59:58.43ID:IcUHLhla
昔、COBOLにはコーディング用紙があってだね。。
520デフォルトの名無しさん
垢版 |
2021/08/09(月) 18:33:09.38ID:qllYLnEb
インタプリタのきもちになるですよ
2021/08/09(月) 19:19:37.91ID:bLRt8Cws
ナイコン時代はノートに書いてMSX持ってる友達の家に行ったなぁ
2021/08/09(月) 19:21:31.61ID:78aLRiJY
>>514
Ruby にも、gzip 用のzlib 拡張ライブラリがある
2021/08/09(月) 19:50:09.21ID:/FHsR+QR
プログラム用紙はfortranやbasic用もあったなぁ
2021/08/09(月) 21:07:18.76ID:JfaUnRB2
紙でコーディングする有用性のわからないやつは素人
昔々のコーディング用紙に書いてたのとは目的が違う

ペーパーコーディングはホワイトボードコーディングの一人プレイ
2021/08/09(月) 21:46:04.35ID:44SGxeRs
おじいちゃんもうプログラムはきついでしょ?
2021/08/09(月) 22:49:45.44ID:IcUHLhla
会議中メモを取る振りをしつつ紙にコーディングする事はあるな
2021/08/10(火) 03:26:30.75ID:dBGoRJhg
それアメリカの面接手法でしょ
紙がもったいないから老害は早く氏んで
2021/08/10(火) 11:01:19.31ID:9Jx01spV
いつまで紙とか言ってんだよ
そんなこと言ってるからにっぽんのITはまじ低レベルってバカにされるんだよ
プログラムの前に頭使えって
2021/08/10(火) 15:13:06.11ID:QlDWWv1x
sqlalchemy使ってるんだけど、
flask使ってないバックエンドのみで完結する方のスクリプト

webアプリ側のスクリプト
それぞれsqlalchemyとflask_sqlalchemy分けて使ってると
コーディングも微妙に変わってきて書き直すの面倒なんだけど
そういうものなのでしょうか?
530デフォルトの名無しさん
垢版 |
2021/08/10(火) 16:38:31.12ID:QOeLlU4q
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

強姦と窃盗はできるんだね!
すごいぞ朝鮮ゴキブリBot君!

クソチョンw
2021/08/10(火) 17:38:11.29ID:ATwEhT0x
>>530
↑この可哀想な子は何なの?
2021/08/10(火) 17:49:01.89ID:IfqoqUXV
お前さあ、ガイジを見かけるたびに近くにいる人に
「この可哀想な子は何なの?」って聞いてるの?
2021/08/10(火) 18:00:15.65ID:9wi/dlAk
>>1
に書いてる、荒らし

>「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。
荒らしは、完全スルー放置が一番きらいです

あちこちのスレの1を改変して、勝手に書いてる荒らし。
確か、工学部というコテハン。
プログラマーじゃない。ソースコードを見た事ない

あちこちのスレの1を勝手に改変して、荒らしている。
こういう勝手に追加したものは、削除した方が良い
534533
垢版 |
2021/08/10(火) 18:04:12.44ID:9wi/dlAk
荒らしは、他のスレのテンプレも、勝手に改変して、新しく立てたりする

漏れらは、そういうスレを削除して、立て直したりしてた。
次スレからは、1のテンプレを元に戻した方がよい
2021/08/10(火) 18:46:28.65ID:21u4vH9c
>>533
お前自信も>>1に書かれてる荒しだろ
頻度が高い分、お前の方が迷惑な存在だから消えろ
2021/08/10(火) 19:29:42.41ID:E/LIVVZz
ああ、こいつRubyガイジか
しれっと自分を欠陥生物から除外するなよ
537デフォルトの名無しさん
垢版 |
2021/08/10(火) 20:42:13.30ID:PJ1bHB/F
このキチガイ文体はAI使うまでもなく分かるだろ
2021/08/10(火) 23:16:26.34
pythonファイルの名前が目的になってる場合
【sumAB.py】
def ◯◯(a,b):
_return a+b

この◯◯の命名はどうしたらいいの?
無難にpythonファイル名と同じでいいのかな
で、importしたときに
from samAB import samAB
みたいな

そもそもあんまり細かくわけないほうがいい?
例えば
【calc.py】
def sumAB(a,b):
_return a+b
def mulAB(a,b):
_return a*b
from calcAB import sumAB,mulAB
みたいな
2021/08/10(火) 23:17:25.06
訂正 from calcAB import sumAB,mulAB
from calc import sumAB,mulAB
>>538
2021/08/11(水) 08:24:03.86ID:bsI09qNM
プログラム初心者ですが、みんなのpythonを一通りやりました
2冊目におすすめの本などあれば教えてください
2021/08/11(水) 08:41:39.09ID:2aR8J+Za
1冊分やったならそろそろ実演経験積めとしか
何やりたいんだよ
例えば機械学習やりたいとか簡易サーバー立てたいとか何かあるでしょ?
2021/08/11(水) 08:54:39.67ID:qGuH144a
pip install をするとこういうエラーが出てきてインストールに失敗するんだけど、なにかわかる人がいたら教えてくれ。
多分Python2のスクリプトが悪さをしているところまではわかったけど、そこから先そうすれば良いか分からん。
スレチだったらすまん。

環境:
Linuxmint 20.2
Python 3.8
pip 20.02

ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-j4aygllu/pysmell/setup.py'"'"'; __file__='"'"'/tmp/pip-install-j4aygllu/pysmell/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-j4aygllu/pysmell/pip-egg-info
cwd: /tmp/pip-install-j4aygllu/pysmell/
Complete output (6 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-j4aygllu/pysmell/setup.py", line 27
print post_install_message
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(post_install_message)?
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
2021/08/11(水) 09:03:47.83ID:sYwGtBdi
PySmellって悪気はないんだろうがなんか下品な名前だな
2021/08/11(水) 09:04:29.85ID:2aR8J+Za
知らんけど2のpip呼ばれてるのでは?
3のpipの実行パスコマンドラインに直打ちすればいーんでね(鼻ほじ)
2021/08/11(水) 09:40:36.88ID:Z6PNV5dP
Ruby なら、print( a ) を、print a と書けるけど、
Python は知らない

print post_install_message
^
SyntaxError: Missing parentheses in call to 'print'.
Did you mean print(post_install_message)?
2021/08/11(水) 10:29:02.04ID:iNehorPT
N88BASIC でも出来るぞ
PRINT A
547デフォルトの名無しさん
垢版 |
2021/08/11(水) 11:27:09.73ID:0GbSOwJG
>>538
__init__.pyを書けば import方法は変更できる
2021/08/11(水) 12:30:56.86ID:clru1KUg
>>542
Pysmellについて軽くググったけど、これ13年前のライブラリか
単純にPython3に対応してないんじゃねこれ
2021/08/11(水) 13:28:39.01ID:ov//wDX1
tに何か入ってきたときと、こなかったときとで
受け取り方を変えたいので
↓のように書いたのですが、returnの部分はこれでいいでしょうか?

def hoge(t=[]):
_x=111
_y=222
_items=[]
_for n in t:
__items.append(n)
_return [x,y,*items]
x,y=hoge()
print(x)
print(y)
print()
x,y,a,b=hoge(["aaa","bbb"])
print(x)
print(y)
print(a)
print(b)
2021/08/11(水) 13:35:55.99ID:aGarSqMh
それってreturn [111, 222, *t]と同じじゃん
何がしたいかわからない
2021/08/11(水) 13:36:27.88ID:ov//wDX1
もしr=hoge()で受け取った場合、rに配列が入りますが、

return x,yだった場合は、タプルで返されますよね
なのでreturn (x,y,*items)みたいに
タプルで返した方がいいのかな?と思いまして >>549
2021/08/11(水) 13:40:42.37ID:ov//wDX1
>>550
本来の用途は、tを再帰して使う
ってことです、しかしそこは冗長なので省略して
何がしたいのかわからないようなhogeという関数名にしています
2021/08/11(水) 13:41:45.42
たまに現れるガチアスペ的な人はネタなのかなんなのか
2021/08/11(水) 13:49:24.55ID:aGarSqMh
どんな計算をするかわからないけど
もし一つのリストにappend/popしていくやり方ができるならそれが効率的だよね
そうでないなら好きにすればとしか言えない
mutableである必要がないならタプルのほうがいいかも
2021/08/11(水) 13:56:30.88ID:ov//wDX1
>>554
なるほどありがとうございます
(受け取った先の)格納された変数をそのまま扱うことが目的なのでとりあえずタプルにしておこうかと思います
2021/08/11(水) 23:17:47.13ID:GEUkRunT
>>541
機械学習、スクレイピングに興味あります
あとは実践あるのみですね、頑張ります
557デフォルトの名無しさん
垢版 |
2021/08/12(木) 00:46:08.61ID:xG1RPqdX
スクレイピングは逮捕される危険があるって聞いたんだけどマジ?
2021/08/12(木) 03:03:44.52ID:id/zPgju
マジだよ
世の世知辛さを悲観して自殺することを薦める
2021/08/12(木) 11:21:51.21ID:s+UN3BdM
スクレイピングでは、そのサイトのrobots.txt を遵守する必要がある

初心者がスクレイピングすると、プログラムのバグで無限ループしたりして、
そのサイトを落としてしまう事があるので、超危険!

だから、必ずテスト中は、ローカルPC に対して行うこと!
絶対に、本番サーバーに対して、テストしてはいけない

Udemy の山浦清透、2021/6 の動画を参照。
マイナビ転職をスクレイピングしてる

【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI
2021/08/12(木) 15:45:04.99ID:YXlgEKkk
requestsだと<br>タグはそのままなんだけど
Beautifulsoupに読み込ませると<br/>タグに置き換えられてしまう
html.parserもlxmlも同じ。<br>のままsoupにする方法ないんかな
2021/08/13(金) 01:53:18.22ID:kzYHP2KN
じゃあrobots.txtを遵守していればスクレイピングしてもOKなんですね?
2021/08/13(金) 05:59:00.03ID:OVgnWf25
逆にスクレイピングしてほしいんだよ
Google botがクロールできなくてGoogleで検索できなかったら困るだろ?
個人にスクレイピングされても不利益しかないが な

robots.txt守っててもあんまりアクセスしすぎても相手に負荷与えちゃうから一回のアクセスにつきどのぐらい待てばいいか考えて常識の範囲内でお楽しみください
「岡崎市立中央図書館事件」のことも調べてみ
2021/08/13(金) 07:44:59.75ID:RVSIiplP
スクレイピングって一歩間違えたら逮捕??怖すぎ
2021/08/13(金) 15:51:14.06ID:KJAOvV5T
まさに素人にはお勧めできない
2021/08/13(金) 16:18:25.34ID:K9p8aCtq
flaskのテンプレートで
{{ ここでコード実行できるけど }}
{{ hensu=dict.x }}
{{ hensu }}
みたいに変数に格納ってできないのかな
dict.xをあれこれ加工した値を使いたい時
毎回dict.xを加工しなくちゃいけないのだろうか?
もちろんdict.xが単一であればテンプレートの外で加工したものを渡せばいいだけなんだけど
2021/08/13(金) 16:26:03.53ID:K9p8aCtq
レスした直後に改めてぐぐったら
{% set hensu=value %}
でいけた
お騒がせしました
2021/08/14(土) 16:50:13.84ID:hrfYhF/k
l1 = [[0 for i in range(7)] for j in range(2)]
で作った [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]] を宣言の後で拡張して、
[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
にする方法を教えて下さい。
2021/08/14(土) 16:55:31.84ID:aA5bsH8A
l1.append([0 for i in range(7)])
2021/08/14(土) 17:17:06.12ID:hrfYhF/k
サンコス、出来ました
2021/08/14(土) 20:33:25.96ID:V/kafYgI
f = open('listfile.txt', 'r')
line = f.readline()

while line:
print(line.strip())
line = f.readline()
f.close()

↑上記のようなコードで、数千文字×数万行のテキストファイルを読み込んだ場合
 メモリ効率というのはどうなるんでしょうか?
 line変数に全ての行が格納されているとしたら、そこが全部メモリを占有してしまったりするのでしょうか?
 それとも、Pythonの場合はそこらへんのメモリ処理をイイ感じに処理してくれるのでしょうか?
2021/08/14(土) 20:45:55.87ID:aA5bsH8A
readline()で一行ずつ読むから使用するメモリは最大で一行分ですよ
2021/08/14(土) 20:58:38.10ID:V/kafYgI
>>571
ありがとうございます。
2021/08/15(日) 01:12:22.32ID:rOIXbdCv
今までVBAしか経験なかったんだけどpythonてVBAより簡単までありますね
今まで頑張ってCSV編集してたのが馬鹿みたい
574デフォルトの名無しさん
垢版 |
2021/08/15(日) 02:21:34.96ID:Ua8YLJnm
windowsです
指定したフォルダ内にいくつフォルダがあるか調べたい
len(p for p in src.iterdir() if p.is_dir())
だと、max_path越えてるpをFalse判定します
なにかいい手段はないでしょうか
575デフォルトの名無しさん
垢版 |
2021/08/15(日) 02:27:06.28ID:Ua8YLJnm
すいません
max_path解除不可です
2021/08/15(日) 04:39:27.95ID:7SSKhdI7
a = [(lambda x: x * i) for i in (1, 2)]
>>> a[1](1)
2
>>> a[0](1)
2

これがxがundefinedにならない理由はなんですか?またx:の部分は引数ですよね?何も受け取らなくてもエラーにならないんですか?
2021/08/15(日) 05:05:10.89ID:tz+DZcyH
>>574
長さチェックしてMAX_PATHを超えてるなら
絶対パスに"\\?\"を付けて試してみたら
(escapeが必要なら"\\\\?\\")
2021/08/15(日) 05:07:28.10ID:tz+DZcyH
>>576
a[0](1)で引数のxに1を渡してる
何も渡さないのはa[0]()
2021/08/15(日) 05:18:47.52ID:7SSKhdI7
>>578
本当だa[0][1]かと思ってたどうも!
しかし面白い言語だ
580デフォルトの名無しさん
垢版 |
2021/08/15(日) 08:18:33.41ID:Ua8YLJnm
>>577
んー層浅いのに名前だけ超長いみたいな例がありうるんです…
なんか短縮?するのってなかったでしたっけ
c:¥foo~¥bar~みたいなやつ
名前が分からないんだけど、windllあたりを叩いてどうにかならんものか
581デフォルトの名無しさん
垢版 |
2021/08/15(日) 13:14:30.49ID:6uWudvu4
馬鹿には無理
582デフォルトの名無しさん
垢版 |
2021/08/15(日) 13:58:20.70ID:v+aZA8Y6
馬鹿じゃないもん!
583デフォルトの名無しさん
垢版 |
2021/08/15(日) 15:47:33.56ID:si7Mpb2N
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
2021/08/15(日) 17:05:24.89ID:7SSKhdI7
>>576
しかしこれiの値が違う関数が2つ作られたと思わせておいて都度iが上書きされてるってやばいな
Python特有の謎挙動他にもあるんだろうな
2021/08/15(日) 17:34:12.53ID:tz+DZcyH
>>584
変数のスコープを理解すれば謎挙動でもない

for i in range(5)
__pass
print(x) // xは4

FAQにも出てるけど変数のスコープについて詳しく解説されてる入門書を1冊読むといいと思う
クラス変数とインスタンス変数のごっちゃに比べれば理解しやすい
2021/08/15(日) 17:40:34.69ID:tz+DZcyH
>>580
試してみたけど>>577のやり方でTrue返ってきたよ

Path("\\\\?\\" + str(path.absolute())).is_dir()
2021/08/15(日) 18:38:17.55ID:huFV89Rq
sqlalchemyでfilterに条件式を動的に入れる時って
.filter(Class.【ここ】 == '値')

【ここ】の部分どうしたらいいの・・?
2021/08/15(日) 18:45:38.77ID:huFV89Rq
自己解決したかも >>587
from sqlalchemy import text

.filter(text("条件式"))でできるみたいだけど
Class.はいらないのだろうか・・
とりあえず試してみます
2021/08/15(日) 19:58:08.59ID:YSnEOPEZ
以下のコードで、数十万行程度の大きめのファイルを作成した場合も
必ずprint("3")はprint("2")の後に実行されますか?
ちゃんとファイルが作成され終わった後に処理をしたい場合、何か必要な記述はありますか?

print("1---------")

with open(FilePath, 'w') as f:
   f.write("test")
   print("2---------")

print("3---------")
2021/08/15(日) 20:08:24.78ID:YSnEOPEZ
>>589
具体的には、ファイルを書き込みし終わった後に
書き込みしたファイルを読み込みたいのですが
問題なく順序通りに処理が行われるのかが気になっています
2021/08/15(日) 20:53:40.27ID:bN+9aniQ
される
2021/08/15(日) 23:10:43.11ID:YSnEOPEZ
>>591
ありがとうございます。
2021/08/16(月) 00:39:51.07
再帰の内包表記でbreak使いたいんですけど
無理でしたっけ?
例えば

ary = ['a','b','c','b']
ary2= ['b','c']
[ n for n in ary2 for m in ary if n==m ]
#['b','b','c']

となるけど最初のn==mでbreakして
['b','c']にする感じです
2021/08/16(月) 01:19:35.67ID:RjtYQ2nK
そんなものはない
595デフォルトの名無しさん
垢版 |
2021/08/16(月) 10:43:06.74ID:X3qQwgV7
>>586
これパスをUNC化するんですね
勘違いしてました。助かりました
596デフォルトの名無しさん
垢版 |
2021/08/16(月) 12:49:48.06ID:X3qQwgV7
一応追記

is_fileやis_dirは通るけど
pilはopenできなかった(FileNotFoundError)
ioはやっぱwindowsのLongPathEnabledが有効でないといかんようだ
2021/08/16(月) 14:43:52.65ID:Gh+OcB3l
>>585
iは4だけどxはundefinedじゃね?

それはともかく
>>> a = [(lambda i: (lambda x: x * i))(i) for i in (2, 3)]
>>> a[1](1)
3
>>> a[0](1)
2
なんだかな
598デフォルトの名無しさん
垢版 |
2021/08/16(月) 14:53:00.33ID:Gh+OcB3l
>>596
PIL で直接開けないときは
io.BytesIO() を使って先にメモリ上に読んで
PIL は bytesIO から読むとうまくいくはず
2021/08/16(月) 15:12:51.28ID:ebJKRLr3
>>596
Pathで渡さずに"\\?\"を追加した文字列として渡せば開くんじゃないかな
Pathで渡すと内部でresolve()呼ばれて"\\?\"がbuilt-inのopenに渡される前に消されちゃってるので
https://github.com/python-pillow/Pillow/blob/master/src/PIL/Image.py#L2967-L2974

面倒なのでパスを短くするかレジストリを変更するかしたほうがいいとは思う
2021/08/16(月) 15:19:33.45ID:ebJKRLr3
>>597
部分適用したいならpartial使えばいい

from functools import partial
a = [partial(lambda i, x: x * i, i) for i in (2, 3)]

Pythonでこういう使い方するのは稀だけど
601デフォルトの名無しさん
垢版 |
2021/08/16(月) 16:09:27.28ID:X3qQwgV7
>>598
はー。色んなテクがあるんですね
すごい勉強になります

>>599
いいねボタンがあったら乱打してます
2021/08/16(月) 17:06:39.96ID:IO9rrDhR
>>597
公式FAQによると、こんな感じに書くのを推奨しているように見える。

a = [lambda x, n=i: x * n for i in (2, 3)]

https://docs.python.org/ja/3/faq/programming.html#why-do-lambdas-defined-in-a-loop-with-different-values-all-return-the-same-result
2021/08/16(月) 20:13:07.13ID:LeWMKcGD
pythonでのスクレイピングでbeautifulsoup4とIxmlの使い分けってあるんですか?
今勉強してる本だとlxmlを使うことが多いので使い分けが気になります
604デフォルトの名無しさん
垢版 |
2021/08/16(月) 20:13:44.57ID:Dz+YmPwS
内包表記でも同じなんだな。この場合lambdaのローカルではないiはどこに残っていることになるんだろ。
forの場合はループ終わってもiが参照可能だから分かり易いけど。
2021/08/16(月) 23:04:11.60ID:AbohF8Pa
>>602
はぁー感心したわ
2021/08/17(火) 05:57:47.50ID:t0cSJCOl
関数のローカル変数と同じ扱いじゃないかね。

def f():
__r = []
__for i in (2, 3):
____r.append(lambda x, n=i: x * n)
__return r

a = f()

こんなコードを実行しても i がグローバルに現れないのと同じ。
2021/08/17(火) 08:28:00.17ID:JAfXgPxe
文字列中の「"」(ダブルクォーテーション)をすべて「\"」に置き換えてprintしたいのですがどうしたら良いですか?
↓のコードを試してみましたが、「\」(円マーク)がprintされませんでした。

test = 'aaa="iii"'
test.replace('"','\"')
print(test)
608デフォルトの名無しさん
垢版 |
2021/08/17(火) 08:43:07.39ID:gaP7rkot
test.replace('"',r'\"')
2021/08/17(火) 09:31:57.36ID:JAfXgPxe
>>608
できました
ありがとうございます!
610デフォルトの名無しさん
垢版 |
2021/08/17(火) 13:47:01.89ID:Q6ss2SIB
>>606
なるほど!
def f():
... r = []
... for i in (2, 3):
... r.append(lambda x: x * i)
... return r
...
>>> a = f()
>>> a[1](1)
3
>>> a[0](1)
3
611デフォルトの名無しさん
垢版 |
2021/08/17(火) 22:16:40.96ID:4J/S2o5Z
tkinterでアプリを作成しています
ボタンが3つあって、それぞれボタンを押すと次の関数が実行されます
def window(test):
root = tkinter.Tk()
これによって開かれた複数のウィンドウがWindows10のタスクバー上で、
自動的にグループ化されるのですが
これをアプリ側で分離させる方法はないでしょうか?
612デフォルトの名無しさん
垢版 |
2021/08/18(水) 01:09:22.36ID:alFzoDYf
タスクバーの設定でグループ化しないを選ぶのが楽
613デフォルトの名無しさん
垢版 |
2021/08/18(水) 01:33:08.02ID:m4X9BWoP
タスクバーの設定だと他のアプリまで分離してしまうのでアプリ側で分離させたかったんですけど
やっぱり方法はなさそうですね
諦めます
2021/08/19(木) 13:42:29.43ID:FqK5lxwf
0.0.0.0:8000

こういう形式のipに変数名をあてたいんですけど
8000の部分はhostでいいとして
0.0.0.0の部分はaddressでいいのでしょうか?
ipかhostにしようか迷ったのですが
ググったところ0.0.0.0の部分はネットワーク部とホスト部みたいに分かれるみたいですし
ipだと0.0.0.0:8000全体を指しそうだし
しかしそれだとaddressもそうでは・・?みたいな
2021/08/19(木) 13:58:24.37ID:LXAdZTw3
命名の話っすか
命名スレでやればいいと思うけど普通はhost:port
だよ
2021/08/19(木) 14:00:41.87ID:LXAdZTw3
あー、勘違いした
hostとportがくっついてる場合を何と呼ぶかか
2021/08/19(木) 14:08:24.00ID:5v0iaVCE
なんか盛大な勘違いもありそうだけど。。。
source or destination で良いと思う
618デフォルトの名無しさん
垢版 |
2021/08/19(木) 19:26:01.79ID:527sxbC6
ねえみんな
IPv6って使ってる?
2021/08/19(木) 20:09:49.11ID:/iV4BAlB
IPv6なんか通信インフラ屋でない限り全く必要ないからガン無視してok
2021/08/19(木) 20:39:42.72ID:d5oNKX28
>>614
素直にAddressPortでいいだろ
Oracleさんも使ってるし
https://download.oracle.com/otn_hosted_doc/coherence/330/com/tangosol/net/LoadBalancer.AddressPort.html
2021/08/19(木) 21:45:53.60ID:9ur+XjZE
さすが命名に定評のあるオラクルさんw
2021/08/20(金) 13:05:28.03ID:aaLnq14B
五教科の平均値を前半期、後半期で出すプログラムを
for文と関数で短めに作るにはどうしたら良いの?
五教科の点数は適当で良いのでアドバイスお願いします
2021/08/20(金) 13:23:47.57ID:nwMAPpno
アドバイスとして求めるなら、
とりあえず自分で書いてみてアップしたら?
624デフォルトの名無しさん
垢版 |
2021/08/20(金) 13:53:32.51ID:bmI6iAbu
pythonやるのって中学校からだっけ?
2021/08/20(金) 13:58:09.36ID:aaLnq14B
Python一年生を読んでて画像表示プログラムを打ってると毎回エラーが出て疲れる
「え?正確に入力した筈なのに何処が違ってる?」
って思うけど、インデント間違いとか大文字と小文字の間違いが一個でもあると動かなくてきついわ
2021/08/20(金) 14:49:12.55ID:O2iQQ7aA
>>625
こことか見てvscode入れれば?
https://www.python.jp/python_vscode/windows/index.html
2021/08/20(金) 15:49:09.09ID:mOJeDUWN
>>625
インデント間違いとか大文字と小文字の間違いで苦労してるようなら、
他の言語で閉じ忘れとか、セミコロン入れ忘れたとかなんてもっとめんどくさいと思う
2021/08/20(金) 15:53:51.70ID:bheJjdjJ
注意欠陥障害みたいなの抱えてる奴には向かない
2021/08/20(金) 17:12:34.95ID:3LXkFTj+
jupyter notebookで複数行のテキストをinputする方法はありますか?
input()でshift+return押しても一行分の入力欄しか出てこないです
2021/08/20(金) 17:25:01.37ID:+XYykUue
lista=[50,80,100,90]
total=0
for i in lista:
total=total+i
c=int(total/5)

lastb=[70,40,60,30]
total=0
for a in listb:
total=total+a
d=int(total/5)
print(c,d)

理解力足りないからこれしか思い付かないが、何も答えられなくて煽るしか出来ないって俺よりバカって事?
2021/08/20(金) 17:28:43.86ID:+XYykUue
>>630>>622で質問した自分
2021/08/20(金) 17:30:09.67ID:FhpMMCBI
def hoge1(a):
_if a=="sato" or a=="tanaka" or a=="suzuki":#@
__return False#A
_else:
__#何らかのコード
__return True

def hoge2(a):
_if a=="sato" or a=="tanaka" or a=="suzuki": return False
_#何らかのコード
_return True

print(hoge1("tanaka"))
print(hoge2("tanaka"))

こういう
「条件を満たしたらreturn Falseする」ときに@で改行してまでAのインデントは無駄かなと思って
hoge2みたいに書いているのですが
a==,a==,,,のところってなんどもa==出てきますが、冗長なコードではありませんよね?
何か別の書き方があるのかなと思いまして。
(例えばjsで言うところのswitchみたいな)
2021/08/20(金) 17:36:35.19ID:nwMAPpno
>>630
それ動かんだろ。せめて実行してみてからうpしろよ。
print(int(sum(lastb)/len(lastb)))
2021/08/20(金) 17:58:59.82
>>630
後々グラフとか作りたいってなるとpandasめちゃくちゃ便利だから使ってみるのもいいかも
https://i.imgur.com/FEWONvX.jpg

import pandas as pd
#前期
df = pd.DataFrame({"国語":[50,55,60],"算数":[80,40,77],"理科":[100,83,76],"社会":[90,82,66],"英語":[88,90,71]},index=["サトウ","スズキ","タナカ"])
#後期
#略

#サトウの5教科の平均点
print( df.loc["サトウ"].mean() )
#国語の平均点
print( df["国語"].mean() )
#算数の標準偏差
print( df["算数"].std() )
#英語の中央値
print( df["英語"].median() )
2021/08/20(金) 17:59:55.07ID:0J8On0UY
>>632
- return Falseの前で改行したほうがいい
- 何度もa==が出てくる部分はin演算子を使う
- elseを書くかどうかは状況による

pylintとかのlinterを使おう
in演算子を使ったほうがいいみたいなのを含めて注意してくれる
2021/08/20(金) 18:04:09.17ID:elEM/mJ5
>>632
サンプルコードみたいな奴だったin使って判定した方がすっきりするぞ
(条件が複雑ならSwich文は無いから、素直にifとelif組み合わせるしかないけど)

def hoge3(name,students):
____if name in students:
________print(name)
____else:
________print("No Student")

student_list = ["sato","tanaka","suzuki"]
hoge3("sato",student_list) #-> sato
hoge3("nakamura",student_list) #-> No Student
2021/08/20(金) 18:06:03.11ID:FhpMMCBI
>>635,636
なるほど
ifでinを使えるのですね
def hoge3(a):
_if a in ["sato","tanaka","suzuki"]:
__return False
_else:
__return True

>pylintとか
調べてみます ありがとうございました。
2021/08/20(金) 18:07:31.47ID:FhpMMCBI
>>636
["sato","tanaka","suzuki"]の部分も外に出して汎用的にスッキリなりそうですね
ありがとうございました
2021/08/21(土) 08:17:19.59ID:T96f+mMj
>>630
これ4教科を5で割ってしまったのとインデントまでしっかり書き込んだのが表示されてないな
と言う事で
誰か、このプログラムをもっと行数少なめで簡素に書いてくれると助かります
2021/08/21(土) 08:27:06.24ID:VDBhwRxo
>>639
うっとおしいやつだな
一番最初に適切なアドバイスくれたやつ(>>623)に礼言って消えろよ
2021/08/21(土) 08:37:26.85ID:T96f+mMj
五教科それぞれの合計数を出すと関数の引数にするまでもなく平均点出せるんだよね…
642デフォルトの名無しさん
垢版 |
2021/08/21(土) 10:32:39.98ID:+K/WXdke
>>639
print(sum(lista)//4, sum(listb)//4)
2021/08/21(土) 10:50:34.22ID:l5Ji0Cfk
>>642
うおー!凄い凄い!これですよ求めてたのは
あなた頭良いですね、ありがとうございました
2021/08/21(土) 10:53:46.80ID:0b1Dm8dh
>>642
「4教科を5で割ってしまった」のと同じバグが発生するぞ
2021/08/21(土) 11:11:32.74
lista=[50,80,100,90]
lastb=[70,40,60,30]
print((lambda n:sum(n)/len(n))(lista),(lambda n:sum(n)/len(n))(lastb))
2021/08/21(土) 16:06:33.06ID:Bsv/eHVD
np.mean(np.array(lista))とか?
2021/08/21(土) 16:23:11.06ID:2TaMM1xI
np.mean(lista) でも np.array(lista).mean() でもいける
2021/08/21(土) 21:43:33.30ID:/rey9CMo
以下のような辞書があって
dict_a = {"a":1.0, "b": 0.5, "c": 0.25, "d": 0.68}

以下のようなlist_aがあって
list_a = ["a", "a", "a", "b", "c", "c", "d"]

dict_aとlist_aから、以下のようなlist_bを作るにはどうするのが良いですか?
list_b = [1.0, 1.0, 1.0, 0.5, 0.25, 0.25, 0.68]

以下のようにfor文を回して地道にやるしかないですか?
list_b = []
for a in list_a:
  if a in dict_a:
    list_b.append(dict_a[a])

ちなみにnumpyは使えない環境です。
2021/08/21(土) 21:44:48.81ID:/rey9CMo
>>648 なるべく処理速度を高めたいです。
650デフォルトの名無しさん
垢版 |
2021/08/21(土) 23:19:07.08ID:7GAoG1Iq
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています

Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます

Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ

なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?

Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html


Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる

「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
2021/08/21(土) 23:23:12.53ID:0b1Dm8dh
mapする時はPythonでは普通list comprehensionを使う
list_b = [ dict_a[x] for x in list_a if x in dict_a ]
652デフォルトの名無しさん
垢版 |
2021/08/22(日) 05:09:08.36ID:DeeCp+C0
linuxでpython動かしたことないのですが
linuxで開発中のpythonコード上でwindowsAPIを実行できますか?
書くだけ書いてwindowsに持ってって実行する感じですか?
653デフォルトの名無しさん
垢版 |
2021/08/22(日) 13:57:54.68ID:cx6/dnxW
WSLのことならOK
2021/08/22(日) 19:37:21.71ID:RWC7FQin
flaskで
def main():
_from flask import Flask
_app = Flask(__name__)
_aaa=10
_bbb=20
_@app.route("/")
_def test():
__print(locals())
_return app
的な感じで書くと、なぜかlocals()でaaaが取得されるんですがバグでしょうか?
655デフォルトの名無しさん
垢版 |
2021/08/23(月) 16:02:00.39ID:Gra2NqP5
型ヒントで
strのlistかNoneが返ることを書きたい

def test(obj: Any) ->Optional[list[str]]
かなと思ったらエラーが…
656デフォルトの名無しさん
垢版 |
2021/08/23(月) 16:05:38.99ID:Gra2NqP5
あ失礼
typing Listがあんのね
2021/08/23(月) 19:42:57.46ID:lyXFy7/6
DataFrameをto_csvでcsv出力すると、CSVの一番左上に入るはずのカラム名(columns.name)が0になってしまいます。
出力するための引数などあるのでしょうか?
658デフォルトの名無しさん
垢版 |
2021/08/23(月) 22:29:26.85ID:NbJ+wt2i
>>655
3.9からはそれでOK
2021/08/24(火) 01:53:49.06ID:OPjw/0cg
>>657ですが、説明が正しくありませんでした
csvをDataFrameに読み込む際、header=Noneにするとヘッダには0からの連番が振られると思います。
このデータフレームのヘッダに対してdf.columns=listで別の名前を割り当て、to_csvで出力しました。
ですが、0のヘッダ名が変わってくれません。
1以上の連番が振られていたところは新しい名前に変わっていました。
何か対策などあれば教えていただきたいです。
2021/08/24(火) 03:40:53.95ID:mZOju8SR
>>659
実際のデータ見てないから想像で申し訳ないけど
0のヘッダ名になってる所ってインデックスになってない?
インデックスはカラムとは別にタイトルを付ける必要がある
df = pd.DataFrame(data)
df.index.name = 'Date
みたいな感じで'
661デフォルトの名無しさん
垢版 |
2021/08/24(火) 20:22:12.69ID:el4vEdwg
windows10の話なんですが
属性確認すると
program files はreadonlyだけど
program files(x86)はreadonlyでないと言われます
どちらも同じ属性じゃないとおかしい気がするんですが、なぜ異なるのですか?
662デフォルトの名無しさん
垢版 |
2021/08/24(火) 20:29:09.46ID:el4vEdwg
なんでここで聞いたかというと
pythonのstat.st_file_attributes使ってるからです
もしかしたらアクセス方法間違ってるとか
別言語では上手くいくとかあり得るのかなと思って。
2021/08/24(火) 22:04:24.96ID:SMXHl8SK
Ruby で、フォルダのモードを取得したら、どちらも40555 だった

file_paths = [ "C:/Program Files", "C:/Program Files (x86)" ]

file_paths.each do |file_path|
fs = File::Stat.new( file_path )
printf "%o\n", fs.mode
end

出力
40555
40555
2021/08/24(火) 23:08:06.06ID:OPjw/0cg
>>660
ありがとう!!
ご指摘の通りインデックス名が出力されてました
df.index.nameにカラム名と同じ名前をつけて解決しました
to_csvではカラム名は出力出来ないんですかね?
本当にありがとうございました!
2021/08/24(火) 23:59:28.05ID:SMXHl8SK
例えば、Ruby では、先頭にヘッダー行を追加できる

require 'csv'

input_csv = <<"EOT"
1,白石
2,西野
EOT

ary = CSV.parse( input_csv ) # 2次元配列
ary.unshift [ "ID", "名前" ] # 先頭に、ヘッダー行を挿入する

p ary #=> [["ID", "名前"], ["1", "白石"], ["2", "西野"]]

# 2次元配列を、CSV 文字列に変換する
csv_str = ary.map( &:to_csv ).join
puts csv_str

出力
ID,名前
1,白石
2,西野
2021/08/25(水) 01:10:46.53ID:xyhN2k85
ruby関係ないし
667デフォルトの名無しさん
垢版 |
2021/08/25(水) 09:24:28.96ID:U8ZXR+0V
>>664
マニュアル嫁
2021/08/26(木) 00:21:00.63ID:PW4YFNBs
もしかしてプログラムでわからないことがあったときって公式のマニュアルを見るのが普通なんですか??
今まで誰かが日本語で説明しているのをググって探してました
公式は英語の直訳で分かりにくくて苦手です
2021/08/26(木) 00:27:55.26ID:XerHugu7
>>668
英語の直訳が読みにくければ英語の原文を読めばいいよ
2021/08/26(木) 00:37:28.11ID:HdMtKHya
公式リファレンス読まないのはギルティ
読みやすいか、分かりやすいかは別だが
671デフォルトの名無しさん
垢版 |
2021/08/26(木) 00:49:51.62ID:zNekFy4I
別にググって探すのは悪くないよ。ただ、実際の動作の裏付けには公式のドキュメントの役割が大きい
だから、ググった上で公式のドキュメントも見るような感じがいいと思う

Pythonのドキュメントは原文も同じ書き方してるから和訳呼んでもわからなかったら原文読んでもわからんと思う
翻訳の問題じゃないから、>>668自信の技術力が足りてないか、原文自体の記述が悪いかみたいな話になるけど
672デフォルトの名無しさん
垢版 |
2021/08/26(木) 00:54:04.47ID:zNekFy4I
Pythonに限らず公式のドキュメントを読み慣れるのは大事だと思う
ドキュメントの構成だったり原文と翻訳の時差とか色々癖あるし
2021/08/26(木) 01:14:15.79ID:wylnrun/
なんだかんだで公式が一番詳しかったりするからな
フォーラムを巡ってもわからなかった問題が公式ドキュメントであっさり解決して、こんなことなら最初に読んでおけばと後悔したことが何度もある
2021/08/26(木) 01:36:05.61ID:2U1NMhFu
>>668
ドキュメントの書き方はどこの言語でもクセがあるから慣れだな
公式ドキュメントを読むクセ付けないとバージョンによっては挙動が違ったりするから
他の人の奴を参考にしてると稀に挙動が違ってて余計にハマったりする

一番信用できるドキュメントは公式、っていうのだけは念頭に置いておいて欲しい
2021/08/26(木) 09:31:05.38ID:ANYTQNnK
公式ドキュメントは専門用語をちゃんと使って
正確に書いてるから、そうとうわかってないと
意味不明だろうな
2021/08/26(木) 09:48:18.62ID:PKQtsNYj
一概にそういうわけでもなくて、文化だったり書いた人の性格や能力に依存するところが大きい
Pythonの公式ドキュメントは上から目線で不親切だと思うよ
Rustなんて遥かに難しくてユーザーのレベルも高いはずだけど、ドキュメントはPythonよりは分かりやすい
2021/08/26(木) 10:04:09.61ID:FZTkV2My
そうとうわかってないと意味不明な公式ドキュメント・・・
存在する意味がないな
2021/08/26(木) 10:44:16.68ID:k5gORvl5
攻略本は読みたくなるけど取扱説明書は読む気がしない
2021/08/26(木) 11:24:47.52ID:kArR7Ozy
操作方法が分からないのに攻略本しか読まないアホ
2021/08/26(木) 16:37:58.78ID:WPRv8+9f
>>671
技術力というより知能が足りない
2021/08/26(木) 17:00:14.47ID:5BXow/+L
>>680
csv読むときにどうやってインデックス名の付ければいいかわっかるかなぁ?
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

はたして君は知能が足りてるのか?
2021/08/26(木) 21:09:48.95ID:dja60KXS
>>677
専門家が度忘れしたときや念のために確認するときに役立つ
2021/08/27(金) 07:26:29.75ID:a7GWOZA3
ここのreferenceはまだ全然見やすい方
Java関係の公式とか酷かった
あと世の中の大半のフレームワークの公式は分かりにくいし雑だな
むしろ公式さえしっかりしてればフレームワーク自体は雑でもいいぐらい公式は重要なのに
フレームワークのフレームワークが公式なんだから
2021/08/27(金) 13:44:12.82ID:lxI1gnNr
Javaのoracle公式は内部で探しにくい
記述はちゃんとしていると思うが
2021/08/27(金) 14:35:37.85ID:FpTGA0p8
API一覧はどっかに載せといて欲しいんだよなあ
BeautifulSoupみたいなドキュメント大嫌い
2021/08/28(土) 15:20:25.04ID:1FNDrQ4q
androidスマホでクローリングとかスクレイピングとかPythonでやりやすいですか?

あるいは他に楽な方法あったら教えてください(プログラミング言語でなくとも)
687デフォルトの名無しさん
垢版 |
2021/08/28(土) 20:01:10.55ID:XJOj+thk
blenderでpython つかってるんですけど

10から-10の範囲で動く変数 var があって
その数値に応じてもう一つの変数 var2 を0から0.2の数値に変化させたいんですが
たとえばこう記述すると

if var >= 0:
var2 = 0.2
else:
var2 = 0

varがプラスになった途端にいきなりvar2の数字が0.2になっちゃうじゃないですか
なのでvar2を徐々に0.2にまで増やしていきたいんですが、なにかいい数式とかないですかね
変数varは一応10から-10の範囲を動くとはしていますが、場合によっては数値がまったく違ってくるので
varを条件式で使う場合の条件はvarが0以上の数値をもっているかいないかくらいしかないです
なのでvar2と他のなにかをつかって数値を調整するしか無いんですが
2021/08/28(土) 21:56:09.25ID:KCQB2Q+0
var2 = (var+10) / 100

これでどや!
2021/08/28(土) 23:04:51.28ID:o0C8VYNv
var2=(10-var)/100
じゃね?
2021/08/28(土) 23:10:19.97ID:Syg1tfaV
> 10から-10の範囲で動く変数 var があって
っと書いてあるのに
> varがプラスになった途端
とか意味わからんので俺は傍観中
2021/08/29(日) 00:00:15.10ID:f3cdDfKi
単純にリニアに対応させるのはよくやるしありそうだけど
残念ながら標準ライブラリにはない
python MinMax scaling
でググるといろいろでてくる
2021/08/29(日) 00:40:53.81ID:a8dnpsvI
変数名にvarとかletとか意味わからなくなるからやめろ
2021/08/29(日) 00:41:59.01ID:kSqJuAzn
じゃあhogeにします
2021/08/29(日) 00:44:34.75ID:a8dnpsvI
hogeとfugaも見ただけで思考が停止する
2021/08/29(日) 00:57:44.19ID:kSqJuAzn
bar bazならOKだね
696デフォルトの名無しさん
垢版 |
2021/08/29(日) 01:24:41.28ID:TPHdi4yb
わざとなのか知らんが
0->10
0.2->-10
なのか
0->-10
0.2->10
なのかはっきりしないな
圧倒的に知能の欠落を感じる
2021/08/29(日) 02:51:56.56ID:8LB32Hf6
そんな事いちいち書かなくても文章見れば分かるじゃない
ガイジなのは一目瞭然
2021/08/29(日) 07:38:58.20ID:H3IeLoxc
windows環境のpythonで追加モジュールインストールなしでシステム音量を変える方法はありますか
スクリプトを流し終わったらミュート解除して音を流してミュートにする的なことをやりたいです
winapi触るようなイメージなんですが
2021/08/29(日) 10:34:36.66ID:dJJJwYZf
windows 10、Python 3.9.1 の環境です
https://i.imgur.com/27ebmLL.jpeg

インポートの仕様についてですが、以下のファイルがあります
/run.py
/modules/a1.py
/modules/a2.py

runはa1を読み込んでいて、a1とa2はお互いに依存しているのでお互いをimportしています。
ここでrun.py を実行すると以下のエラーが表示されます。

Traceback (most recent call last):
File "C:\run.py", line 2, in <module>
from modules.a1 import A1C
File "C:\modules\a1.py", line 2, in <module>
from modules.a2 import A2C
File "C:\modules\a2.py", line 2, in <module>
from modules.a1 import A1C
ImportError: cannot import name 'A1C' from partially initialized module 'modules.a1' (most likely due to a circular import) (C:\modules\a1.py)

エラーの内容はrun→a1→a2→a1 と、インポートが循環しているからというのはわかるのですが、pythonの文法として 循環インポートはコード書く側が注意しないといけないものなのでしょうか
これ以上ファイルを増やしたくないのですが、 __init__.py というものを使う必要があるのでしょうか。
2021/08/29(日) 10:38:21.86ID:SOFRyS0H
>>699
普通はお互いに依存してる部分を切り出して共通クラスを作るぞ
2021/08/29(日) 11:42:47.82ID:6aPcdB/x
>>688>>689
アニメーションさせるオブジェクトの設定を見直していたら数値が変わってしまってvar2は0から1、varが取得する数値が-100から100くらいになってしまったので
最初にあげた数値とは違っていますけど参考にして書き直しました

(10+var)/400 if var >= 0 else (10-var)/400

varが0近辺になるときに返す値を0から1の範囲でうまい具合に動かしたかったんですがこれでなんとかなりました
どうもでした
2021/08/29(日) 12:50:56.45ID:Y4MENvlF
>>699
インポートが実行されるタイミングで循環が発生しないようにすればいい
その例だと「A1Cをimport -> そのためにはA2Cが必要 -> そのためにはA1Cが必要」で循環してる
例えばa2.pyのほうをimport modules.a1 as A1とかにすればインポート実行時には循環しない

設計を変更するのが一番だけど
何か特別な事情があるならインポートを遅延させるとかで対処する
2021/08/29(日) 13:13:15.88ID:nWxynwj6
これifいらんことない?
2021/08/29(日) 13:42:27.03ID:dJJJwYZf
>>700,702
どうもです。
という事は、最初1ファイルにズラーッと書いて一段落したからちゃんとクラスごとに別ファイルに分けようと思ったら
切り貼りしてimport文付け足すだけでリファクタリング出来る保証は1ミリも無いという事か・・・
2021/08/29(日) 13:44:36.38ID:ik0U7t7o
そんなに気にしなくていいよ
そのレベルだと、後でリファクタリングしたくなる頃には今より遥かに腕が上がっていて、最初の頃に書いた糞コードなんて全部捨てることになるから
2021/08/29(日) 14:28:14.75ID:W2eZWYJ9
>>699
コードとかレスはよく読んでないけど
公式ドキュメントにはfrom import使わずに全部importだけでやれば回避できると書いてあった気がする
まあ実際には100%問題を回避できるわけじゃないはずだが
2021/08/29(日) 17:14:19.33ID:D+nxUtQ9
>>686
オモチャでマジのプログラミングとか考えるな
HelloWorldまでにしとけ

>>698
Vista以降のボリューム変更は確かCOMでしか操作できないんだよなあ
MMDeviceだかってやつ
初心者(が/でなくとも)ctypesから使うのは荷が重い気がする
2021/08/29(日) 17:31:44.52ID:f3cdDfKi
外部プロセスでPowerShell呼ぶとか
そもそもPowerShellで書くのはダメなのか
適材適所
2021/08/29(日) 18:01:08.20ID:wRzFeJgq
趣味でゲームを作っているpython初心者です
発想を間違えている気がするのですが調べても独力で修正できないので質問させてください

pythonでは ファイル間を超えて有効な広域配列変数を定義することはできない という理解であっていますか?
アイテム情報や命名マスタなど「あちこちから参照したいマスタデータ」の持ち方が分からず困っています

トップレベル(≒高いレベル)でCSVロードを済ませた配列なりインスタンスなりを、中間クラスの引数として目的の関数まで持ちまわるしかないのでしょうか?
710デフォルトの名無しさん
垢版 |
2021/08/29(日) 20:57:36.98ID:+XFaADRO
モジュールとして参照できる

<vars.py>
X=10
Y=100

<main.py>
import vars
print(vars.X)
print(vars.Y)
711デフォルトの名無しさん
垢版 |
2021/08/30(月) 14:16:06.77ID:a7szkEqk
memcached
pymemcache
2021/08/30(月) 15:03:22.80ID:IH9WNTpQ
>>709
テストや柔軟性をかんがえるとクラス化してメソッド(関数)経由にしとくのであってる
Python定番の設定管理向けモジュールがないのが難

>>711
みたいに格納先を変えたい場合でも対応できるし
713デフォルトの名無しさん
垢版 |
2021/08/30(月) 17:48:48.11ID:7NK+aNuC
configparserもヘナチョコいんよねえ
714デフォルトの名無しさん
垢版 |
2021/08/30(月) 22:43:34.34ID:30yuDIRz
python2でpip等使わずlz4のデータ展開をする方法はありますか?
2021/08/31(火) 00:05:53.27ID:2Z3a814f
OSにliblz4があるか導入できるならctypesモジュールでいけんじゃない
716709
垢版 |
2021/08/31(火) 19:12:15.52ID:9YLyrvXT
みなさんありがとうございます
pymemcacheが探してた答えのようです
>>712
自分の設計が悪いだけなのでしょうが、引数で持ち回ると全体的にコードが冗長になってしまい正解が分からなくなっていました
2021/08/31(火) 19:30:48.38ID:VFuuQVk7
グローバル変数的なものを格納するだけに使うつもりで、常に1つしかインスタンス化しないようなクラスは、全くインスタンス化せずクラス変数とクラスメソッドで使うというのもありですか?
インスタンス化してインスタンス格納用の変数を用意するのが面倒だなと思いまして。
2021/08/31(火) 20:01:08.53ID:2Z3a814f
mockで差し替えたり、初期化を遅延したりしないんならそれでもいいんじゃない
もし必要になったときに見直せばいい
といってもシングルトンの制御いれるだけなんだけどね
2021/08/31(火) 21:31:36.81ID:1mws6K8n
https://ideone.com/Xn6V4Y

1から10まで数え上げるプログラムで
total = 0をdefの上の行に移動するとエラーになります
>UnboundLocalError: local variable 'total' referenced before assignment

defの中からグローバル変数?は書き換えられないということですか?
あたま痛い
2021/08/31(火) 21:47:50.29ID:vXJ7Oc0W
複数行コメントアウトしたいとき
'''
print("hello")
'''
pass

という風にしますが、
解除したいとき変更箇所が2箇所あるのでちょっと面倒だと思いました
なので
#'''
print("hello")
#'''
pass
こうして、上部のみの#を付けたり消したりするだけで切り替えできるようにしてみたのですが
何か不測の事態とか起きるでしょうか?
2021/08/31(火) 21:48:09.84ID:vX6Y4w4T
>>719
global total
2021/08/31(火) 21:53:19.20
エラーでなかった >>719
https://colab.research.google.com/drive/1KbiL4M7797yGTfasvBOkor3HJzTCgPLf
2021/08/31(火) 23:25:58.49ID:7dGeW7mE
>>719
Pythonの変数のスコープについて調べたほうがいいかもね
2021/08/31(火) 23:47:03.52ID:2Z3a814f
>>720
それ文字列リテラルでコメントアウトに使うもんやない
Python対応のIDEかエディタつかおう
2021/09/01(水) 07:51:46.18ID:A3Q1UiDE
twintってライブラリ使ったことある人おる?
自分のアカウントのすべてのツイートをスクレイピングしてきたいんだが、10日前くらいまでのツイートしかとれなくて困ってる
2021/09/01(水) 13:06:04.44ID:uLacWkrf
>>725
https://github.com/twintproject/twint/issues?q=is%3Aissue+10+days
2021/09/01(水) 20:28:34.09ID:KwaoNT+v
いちばん勢いあるPythonスレがこのスレで、この程度の勢いとか
Pythonほんとに人気あるの?
2021/09/01(水) 20:51:14.35ID:zw5pi55j
ム板と言うか5ch自体が衰退メディアですし
2021/09/01(水) 22:50:28.57ID:UppKED7J
>>726
ありがとう。
昨日から使い始めたけど、ちょうどそのタイミングくらいから他の人も使えなくなったっぽいですね
twintをあと1週間早く知ってればよかった。。
2021/09/02(木) 12:59:54.32ID:DVH2qPZi
Windowsでminiconda(4.9.2/python3.8.5)使っててproxy関係のエラーが出る。
proxyが必須なNW環境。
baseだとproxyエラーが出ずrequestで外部URLのスクレイピングなどもできる。
それ以外の環境をconda createで作ってそっちをactivateした状態からだと「cannot connect to proxy」エラーが出る。
.condarcにはproxyを記述してある。
どの環境からconda configを見てもHTTPもHTTPSもproxy情報が参照できている。

baseをcloneした環境を試したらそっちは繋がる。
cloneで作った環境とcloneせずにcreateした環境(proxyエラーになる)とでライブラリをチェックしたけどopensslとかcertifiとか入ってるもの自体はほとんど同じ。
違いというとcreateした方はversionがconda-forgeの最新版になってるからそこだろうか。
minicondaの最新版のインストーラ(4.10.3/python3.9)を使って再インストールしたらbaseからでも繋がらない。
proxy接続のためにWindowsの証明書ストアに.crtファイルをインポートとかしてるからその辺りかもしれない。
731デフォルトの名無しさん
垢版 |
2021/09/02(木) 16:02:33.72ID:L8dQJCTS
初めてwindows使うんですがcondaとpipってどっちがいいんでしょうか
今まではノリでpip使ってたんですがググるとcondaもいいと言われて迷ってきました
主な使用用途は簡単なスクリプトからデータ計算、セキュリティの勉強や自分用のまとめ表作りなど本当に様々です
732デフォルトの名無しさん
垢版 |
2021/09/02(木) 16:15:26.22ID:4vWPiFe2
>>730
原因を調べたいのだったら追及すれば良いけど
そうじゃないならVPNとかSoftEtherとかでProxy無しで外に出れるフェイク環境を作ると解決

>>731
pip
ただしcondaが共存してるときはcondaで先に探して
見つからないときだけpip使うようにしてる
2021/09/02(木) 19:59:47.57ID:bRMdZZsN
>>727
https://search.yahoo.co.jp/realtime/search?p=python
734デフォルトの名無しさん
垢版 |
2021/09/02(木) 20:21:57.15ID:PLPQmXRE
>>731
pip
condaいらん。無駄なことしたくなかったら入れないほうがいい
735デフォルトの名無しさん
垢版 |
2021/09/02(木) 20:32:53.62ID:lSTkj0Rg
https://twitter.com/freezerinalice/status/1433389771800256516
https://twitter.com/5chan_nel (5ch newer account)
2021/09/02(木) 20:41:46.54ID:t+wDMqp+
クラス変数に順次アクセスする方法はありますでしょうか。(define代わりにクラス直下に変数が複数ある状態)
__dict__.valuesで取れるとあったのでリストに入れてforで回そうと思ったのですが、変数以外にいろんな属性がついてきてしまいます。
2021/09/02(木) 20:55:57.53ID:DVH2qPZi
>>732
原因分かったわ。
世の中に配布されてるcertifiのcacert.pemっていうファイルにこの環境で使ってる独自の証明書のpemファイルの中身を追記したら繋がった。
コピペは避けたいから2ファイル読ませられないかとcertifiを調べたけどcacert.pemが決め打ちだから無理っぽい。
ついでになぜか3.8.5までしか動かない問題をチェックしたがそっちは解消されず。
3.9にすると同じ方法でも繋がらないどころかconda自身のアップデートもできない。
openssl周りじゃないかと思うけど諦めた。
2021/09/03(金) 11:02:01.16ID:qtGmv/9F
>>736 こういうこと?

https://stackoverflow.com/questions/1398022/looping-over-all-member-variables-of-a-class-in-python

https://stackoverflow.com/questions/5607307/get-the-list-of-a-classs-variables-methods-in-python
2021/09/03(金) 13:14:44.01ID:QJ/1j3Lw
>>738
出先なんで試せてないですが、そんな感じです。厳密には変数名ではなくて値を取りたいです。
740デフォルトの名無しさん
垢版 |
2021/09/03(金) 21:55:16.43ID:T2V+s1mX
>>738
差集合とるのか。なるほどな
https://ideone.com/OwAB4x
2021/09/05(日) 13:43:56.65ID:LaSEjliV
tzinfoが設定されているdatetimeオブジェクトを、時差が適用された状態で文字列か新しいdatetimeオブジェクトに変換したいです
具体的には↓のコードのlocal_dtから日本時間に変換したdatetimeオブジェクトが欲しいです
↓のコードではpublishedは最初UTCで、それをAsia/Tokyoのlocal_dtに変換しています
しかしlocal_dtのmonthやdayなどを参照しても日本時間になっていません
時差の実際の適用は手動でやる必要があるのでしょうか?

def get_published(self, obj):
print('tzinfo', obj.published.tzinfo) # UTC
tz = pytz.timezone('Asia/Tokyo')
local_dt = obj.published.astimezone(tz)
print('conv tzinfo', local_dt.tzinfo) # Asia/Tokyo
return local_dt
742デフォルトの名無しさん
垢版 |
2021/09/05(日) 14:51:07.53ID:LgQhIBwq
localtime()
2021/09/05(日) 14:53:32.33ID:lJqHVJAL
>>741
特に問題なさそうだけど
https://paiza.io/projects/e/sD6Ie32hJrm87zm1wb_LDg
2021/09/05(日) 15:54:14.08ID:LaSEjliV
>>742
timeモジュールのですか?

>>743
????
同じコードをこちらの環境(Linux)でも実行しましたがうまくいきました
Djangoでコードを動かすとなぜかうまくいきません
なんで?
2021/09/05(日) 16:08:51.59ID:lJqHVJAL
>>744
https://docs.djangoproject.com/en/stable/topics/i18n/timezones/
2021/09/05(日) 19:53:30.08ID:ejEr4mJx
リストの結合について質問です
リストの先頭要素を末尾に移動したいとします
ex)[0,1,2]→[1,2,0]

コマンドラインで以下のように書いたところ
2行目で can only concatenate list (not "int") to list というTypeErrorが発生してしまいました
li = list(range(3))
li[1:] + li[0] # TypeError

結果として
li[1:] + li[:1]
としたら問題なく通ったのですが、先に書いた方がエラーになるのはどうしてですか?

li[0]は0(int型)なので、スライスを使用して取得したリスト(li[1:] で得られる [1, 2]、リスト型)とは加算演算できない、という認識で良いですか?
で、li[:1]で取得できるのはリスト型の[0]なので加算可能ということでしょうか
747デフォルトの名無しさん
垢版 |
2021/09/05(日) 20:47:37.17ID:DaMQ65LY
>>746
大体そんな感じ

"+ (加算) 演算は、引数同士の和を与えます。引数は双方とも数値型か、双方とも同じ型のシーケンスでなければなりません。前者の場合、数値は共通の型に変換され、加算されます。後者の場合、シーケンスは結合 (concatenate) されます。"
https://docs.python.org/ja/3/reference/expressions.html#binary-arithmetic-operations
2021/09/05(日) 20:51:43.82ID:ejEr4mJx
>>747
ありがとうございます
参考URLもどうもです
749デフォルトの名無しさん
垢版 |
2021/09/06(月) 12:19:20.10ID:5X8quI1P
ファイル読み込み時に入力セパレータを改行から他の文字列に変える事は出来ないのでしょうか?
perlなら$/='\n\n'みたいに入力のレコードセパレータを改行2個にしたり出来るのですが
今はファイル一括で読み込んでsplitしてるので読み込み時間がえらく掛かってしまいます
1行ずつ連続した改行がくるまで読んで連結するとかはあまりスマートじゃないのでなにか上手い方法知ってらっしゃる方いましたら教えて下さい
2021/09/06(月) 12:45:22.69ID:n3QcSaSA
csvとして読み込め
2021/09/06(月) 12:47:18.91ID:FistWoaj
open関数のnewlineパラメータでできそうだけど速くなる気がしない
752デフォルトの名無しさん
垢版 |
2021/09/06(月) 14:44:42.59ID:DsY+3+kX
>>743
変数名や引数名の付け方が最低だな
753デフォルトの名無しさん
垢版 |
2021/09/06(月) 14:46:25.44ID:DsY+3+kX
>>746
li[1:] + [li[0]]
754デフォルトの名無しさん
垢版 |
2021/09/06(月) 14:48:25.79ID:DsY+3+kX
>>749
>一括で読み込んでsplit
本当にこれが原因だと思ってるなら
2行ずつ読めば良い
2021/09/06(月) 15:11:11.17ID:h2TdR+zH
first_value = li.pop(0)
li.append(first_value)
実行速度を気にするならdequeとか使うんかね
756デフォルトの名無しさん
垢版 |
2021/09/06(月) 15:25:00.95ID:5X8quI1P
>>754
すみません、2行ずつ読む意味が分からないんですがgzip化された25万行くらいのファイルでも読み込むと
d = fp.read()で一括で読んだ時は6秒程度、d = fp.readlines()やd = [x for x in fp]で1行毎に読んだ時は0.3秒程度と読み込みだけで結構な差が出てますので一括が原因だと考えてます。

やりたい事は下記のような必ず改行2連続で区切られたデータひと固まりをリストの1要素として取得したいわけですが、これを下記のようにやると読み込みに時間が掛かってしまうので先の質問に至ったわけです
d = fp.read()
s = d.split('\n\n')

aaa
bbb ここのひと固まりの行数は可変
ccc

ddd
eee

fff
ggg
hhh
2021/09/06(月) 16:49:12.87ID:cl/YIp9D
人間の発想だと改行が2個続くことを条件に分割してやれば早いって思えるけどpythonのあるべき書き方だと違うやり方の方が早いこともありそうな気がするね。
例えばだけど1行ずつ読んでkeyを行番号にvalueにして中身は条件判断せずにテキストを読み込み切ってからvalueを縦に走査して改行のみが入ったところで区切りの処理をするみたいな形にしたら早まらんかな。

元の質問の狙いとしては改行が2個続いたときに普通は使われない文字(例えば▲とか)に1回置換してそこからまた▲を行区切りとして読めば短縮されるのでは?というように見える。
けど756を見るとその置換処理の時点で6秒かかって意味なさそうに見えるわな。
2021/09/06(月) 16:53:07.95ID:VKhiLpUq
>>756
その程度なら次の行読んで
・データがあるならリストに追加
・空か末端ならリスト終了
でええやん
あるいはBufferedReaderつかってリスト毎に返すioを実装
759デフォルトの名無しさん
垢版 |
2021/09/06(月) 17:15:24.45ID:5X8quI1P
>>757
質問の意図としては一括払い読み込みのread()は遅いので使いたくない
読み込みが速い1行ずつの処理で行いたいが、perlのようなファイル読み込みセパレーターが改行2個に出来れば
純粋な1行読み込みみたいにループ処理の際に改行のみのデータが来るまでリストや文字列を連結すると言った事をしなくて良いのでその方法があったら知りたいって事です

>>758
やっぱりリスト追加とかやるしか無いんですかね
bufferdReaderとかってヤツは知らないので調べてみます
2021/09/06(月) 17:34:12.87ID:cl/YIp9D
ファイル開くときのopenでnewlineに改行2個入れてみたら?
2021/09/06(月) 17:35:55.31ID:cl/YIp9D
>>760
エラー出たわ
762デフォルトの名無しさん
垢版 |
2021/09/06(月) 18:22:41.52ID:5X8quI1P
なんか調べてたら公式のissue152248で任意の区切り文字での読み取りの話を色々やられてたんで、それ通りやればとりあえずは望み通りの動きが出来ました
まあ知らない記述やらモジュールとか使ってるんで全く内容理解してませんが
長々と失礼しました、回答頂いた方ありがとうございました
763デフォルトの名無しさん
垢版 |
2021/09/06(月) 23:20:11.85ID:lLs6oVSG
よろしくお願いします
tqdmのプログレスバーがリストの長さだけ改行されてターミナル上で表示されてしまいます
これを1本のバーが更新されて表示されるようにしたいです
python3.7.9, VScode, windows10です
764デフォルトの名無しさん
垢版 |
2021/09/06(月) 23:39:42.63ID:ek7WdP0s
1行の長さを適当に100文字と考えて50MB程度しかないのに、buffer(あるいは行)に分割しないだけでそんなに遅くなるもんかな?
2021/09/07(火) 10:32:46.11ID:SoS5+Qbw
うちのpython3.8.5のシェル、pip install sympyが通らないからおかしいなーと思ってpip installを実行したらこれも通らないんだけど何故?

>>> pip install sympy
File "<stdin>", line 1
pip install sympy
^
SyntaxError: invalid syntax
>>> pip install
File "<stdin>", line 1
pip install
^
SyntaxError: invalid syntax
2021/09/07(火) 10:50:57.04ID:SgLDDegk
>>765
それはシェルじゃなくてPythonのインタプリタ
pip installはbashやzshみたいなシェルに入力するコマンド
Pythonのインタプリタは基本的にPythonのコードを入力するところ
767デフォルトの名無しさん
垢版 |
2021/09/07(火) 11:05:44.28ID:E5TDGgcH
>>764
色々試してみましたが、読み込みと言うよりメモリに一括で入れるのが原因で遅くなる感じのようです

d = fp.read() や d = ''.join(fp) や d = ''.join([x for x in fp])とか色々試しましたけど、これらの場合は遅くて
下記のようにfor文で連結させたら早くなりました
ネットとか見てもjoinの方が速いとか書いてるんですけどね
d = ''
for s in fp:
d += s
768デフォルトの名無しさん
垢版 |
2021/09/07(火) 12:03:40.05ID:E5TDGgcH
>>767
自己レスですけどマシンの問題のような気がします
Linuxでやってるとread()がめっちゃ遅いんですが、windowsだと変わらないくらい速いです。
寧ろ+=で代入とかしてる方はクソみたいに遅すぎて、なんでここまでの差が出るのか意味分からないくらいです
2021/09/07(火) 12:18:31.34ID:hE/CNaTP
>>767
どう考えても計測方法・計測環境の問題
キャッシュか空きメモリの影響
2021/09/07(火) 13:57:15.69ID:6nMAIx0t
メモリ周りだとありがちなのは初回だけ遅くて2回目は早い(python用にメモリ空間を囲うから)だけどそうでもないならOSのファイルシステムの根っこのあたりが腐ってるとかかもな。
個人的に作ってるようなものだったらgoogle colabとかのクラウド実行環境でサクッと検証してみては?
771デフォルトの名無しさん
垢版 |
2021/09/07(火) 14:25:01.03ID:QthkAqNV
>必ず改行2連続で区切られたデータ

readlines() でループ回して一回ずつ飛ばせば良いだろうね
2021/09/07(火) 15:00:03.49ID:GNL8Ud6q
改行3連続があった場合は?
2021/09/07(火) 15:48:04.56ID:2tb+Xun1
>>741
ですが解決しました
sqlite3使ってたせいだったみたいです
2021/09/07(火) 18:18:55.32ID:SoS5+Qbw
>>766
ありがとうございます。今度はシェルでpip install sympyが通ったんですが
pip installが通りません。
>pip install
ERROR: You must give at least one requirement to install (see "pip help install")
2021/09/07(火) 18:42:45.52ID:o/q1by9H
>>774
単純にpip install <インストールしたいパッケージ名>
っていう構文だから
ッケージ名を書いてなかったら、そりゃエラーメッセージ通りのエラーが出るぞ
776デフォルトの名無しさん
垢版 |
2021/09/07(火) 18:46:56.75ID:9ZJa/YC2
d = ''
for s in fp:
__d += s
これは一番ダメな実装でしょ。
文字列はイミュータブルだから、メモリコピー量が2乗で増えていくことになる。
それでもマシンの能力が「十分」なうちは、他の実装より速いこともありうる、ってだけ。
2021/09/07(火) 19:35:15.63ID:yHN0q2ka
>>776
ねーよ
2021/09/07(火) 19:36:34.77ID:u7xHCyux
>>773
sqlite3とどう関係が・・・??
2021/09/07(火) 19:59:43.49ID:6nMAIx0t
>>776

随分昔(※Java1.5の頃)から、「文字列結合は"+"ではなく、StringBufferを使うと処理が高速化する」ということが既に広く知られていました。
https://qiita.com/nkojima/items/0098dccbe4a593bc0306

みたいな話かな。
pythonだとどうなんだろ。
2021/09/07(火) 20:23:56.12ID:SoS5+Qbw
>>775
え、インストールしたパッケージ一覧が出てくるんじゃないですか?
誤情報ですかね・・・
2021/09/07(火) 20:25:59.15ID:yP3cXAjd
pip list
2021/09/07(火) 20:26:41.96ID:o/q1by9H
>>780
節子、それやりたいならpip listや
2021/09/07(火) 20:33:41.53ID:YcIWO4/P
Elixir は片方向リストで、immutable だから、
先頭への追加ではコピーされないけど、
末尾へ追加するとコピーされる

つまり、先頭のみ最適化される

だから未だに、文字列を追加していく方法が分からない
2021/09/07(火) 20:37:37.38ID:eKv4jfBm
>>776
今時はよほどループ回さんとたいして違わない
https://qiita.com/GinRickey/items/d8ed9964820313340a93
2021/09/07(火) 21:31:13.42ID:8Blsw2sW
CPythonでは最適化が入っていてO(n)になるんだけど使うなとPEP8に書いてある
https://www.python.org/dev/peps/pep-0008/#programming-recommendations

For example, do not rely on CPython's efficient implementation of in-place string concatenation
or statements in the form a += b or a = a + b. This optimization is fragile even in CPython
(it only works for some types) and isn't present at all in implementations that don't use refcounting.
In performance sensitive parts of the library, the ''.join() form should be used instead.
2021/09/07(火) 23:20:45.23ID:Cp1uuQsT
>>779
それってJavaの処理系がさぼっているだけだよねね
2021/09/08(水) 00:39:17.00ID:jISXv5nw
>>786
スレチだからあれだけど、一応はJDK11で大分改善されたぞ
(それでも+結合が一番遅いけど)
788デフォルトの名無しさん
垢版 |
2021/09/08(水) 15:36:42.18ID:sW5ieu31
>>732
>>734
大変遅くなりましたがありがとうございました
助言通りpipにします
789デフォルトの名無しさん
垢版 |
2021/09/08(水) 15:56:50.49ID:45GUJlB8
重いcondaら
2021/09/08(水) 16:50:53.30ID:B2IhbCSc
勉強するだけならcondaが便利

でも他システムと繋げにくい
2021/09/08(水) 17:27:10.26ID:tJQkvu8J
formatで
0.1未満なら "5.2%"
0.1以上〜1.0未満なら "5.1%"
みたいに、全体の桁数は固定で値によって少数点以下を調整してくれるような簡易な方法ってないですか?(%だけでなく、fなんかでも)

formatだと丸められるので、単純に
if x >= 0.1 とかはできないので、一旦formatかけてからlenで桁が溢れてないかチェックしてるんですが、もうちょっとスマートな方法が無いものかと。
2021/09/08(水) 17:42:49.27ID:s8bChe9P
単に関数作っとけばいいんでないの?
2021/09/08(水) 17:50:12.13ID:QqH5BAVe
何回か読み直したが
難解過ぎて俺には文章の意味がわからなかったよorz
794デフォルトの名無しさん
垢版 |
2021/09/08(水) 17:51:41.60ID:45GUJlB8
ruby 使ってると馬鹿になりゅよ
2021/09/08(水) 17:53:59.73ID:s8bChe9P
>0.1未満なら "5.2%"
>0.1以上〜1.0未満なら "5.1%"

ここが逆になってるんだろ?
小数点以下が0.1以上の場合は全て0.2に統一って事じゃ無いの?
そうでないとしたら俺も理解不能だわ。
2021/09/08(水) 18:59:48.32ID:XUjypBYd
condaはバックアップ取ったりcloneできるのが便利。
2021/09/08(水) 19:32:05.85ID:aHZlxj+w
master.py上に実行したいスクリプトtestxx.py(xxは数字)がたくさんあります。
os.systemで引数を渡してtestxx.pyを実行しているのですが、testxx.pyからの戻り値を受け取る場合はどうしたら良いのでしょうか。標準出力の値なら取れるみたいな記述を見ましたが、実行中にprintを多様しているため、任意の戻り値のみを取得したいです。
798791
垢版 |
2021/09/08(水) 20:04:49.50ID:tJQkvu8J
分かりにくくてすみませぬ

{x:5.2%} {x:5.1%} というformatで
xが0.1=10%、1.0=100% なので、

10%未満なら9.99% まで少数点2桁、
10%以上100%未満なら99.9% まで 少数点1桁
で表示してほしい、という意味です。
全体桁固定で少数点だけ変動するようなformatの表記、あるいはやり方は無いかなという質問です
2021/09/08(水) 20:42:07.84ID:s/O0A+9w
こんなんで
x = 12.125
f'{x:.2f}'[:4]
2021/09/09(木) 01:16:22.36ID:YDItKt7x
numpyのメソッドzerosやonesなどは引数をタプルで指定することになっていますが、リストで指定しても実行できています。
特に問題ないように見えるのですが、タプルで指定した方がいい理由などあるのでしょうか?
2021/09/09(木) 02:10:35.73ID:1BTdIMLT
タプルは普遍だけれども、リストはそうでないから成長することを想定して必要以上の領域が確保されちゃうぶん効率が悪いとかあるんじゃね?知らんけど
2021/09/09(木) 02:34:23.48ID:OKDvztcs
sequenceの操作しかしてないから実際はlistでもOKないんじゃない?
onesの説明には
> Parameters: shape: int or sequence of ints
とあるしzeros側のメンテ漏れとか
2021/09/09(木) 08:14:59.88ID:Ubp0J8aB
>>799
%だと末尾に%が付くので…
2021/09/09(木) 08:44:11.31ID:1BTdIMLT
>>803
つければいいだろ…
f'{x:.2f}'[:4] + '%'
805デフォルトの名無しさん
垢版 |
2021/09/09(木) 14:16:43.72ID:3sOE3L2f
>>797
subprocess
popen
2021/09/09(木) 14:54:22.16ID:MjE68I3R
>>798
こういう事?
x = 0.5
print(f'{x*100:.2f}'[:5]+'%')
2021/09/09(木) 16:50:44.90ID:Ur+lRPYu
これで良くない?
str_formatted = f"{val:.2%}"[:4] +"%"
2021/09/09(木) 16:58:17.08ID:MjE68I3R
>>807
それだとうまくいかんよ。

>>>val=0.5
50.0%
>>>val=1.5
150.%
2021/09/09(木) 17:03:24.41ID:s2e04Gy+
>>808
> 10%未満なら9.99% まで少数点2桁、
> 10%以上100%未満なら99.9% まで 少数点1桁
って言ってるのにわざわざ150%とか出してきてドヤるのは頭になんか障害でもあるのか?
2021/09/09(木) 17:16:30.91ID:MjE68I3R
>>809
>>798
別にドヤってないし、>>807に値を渡した結果を書いてうまくいかない旨を示しているだけだが?
俺も同じようなの試してうまくいかなかったのでうまくいかないと書いただけ。
急に絡んでキレるのは頭に障害でもあるのか?
2021/09/09(木) 17:32:52.06ID:3PF/LFW4
その>>798から引用してるんだけど…
マジでお前が読めよw
2021/09/09(木) 17:35:57.82ID:MjE68I3R
すまん。なんか勘違いしてたわw
>>807で大丈夫だな。
俺のだと、こうだわ。print(f'{x*100:.2f}'[:4]+'%')
2021/09/09(木) 18:13:06.28ID:Ur+lRPYu
100%の値を渡した時に表示がおかしくなる書き方した俺が悪かった、すまん
境界値テストをちゃんとやってなかった証拠だな、マジでごめん
(実務でも似たような事やらかすからマジで反省しとる……)
2021/09/10(金) 04:40:44.86ID:uZ6rg4vc
>>781
>>782
遅くなり申し訳ありません。ありがとうございました。
2021/09/10(金) 08:23:56.80ID:oazR15lu
質問とは趣旨違いだがコマンドラインアプリでもGUIでめプログレスバーや%進捗表示はまず回避してどうしてもって言われたら超シンプルにしろって昔言われたな。
境界値の扱いでバグりやすい。
ただ本質的なバグではないのに99.9%で完了するとか100.1%まで行くとかのバグ指摘を受けやすい。
あと業務のこと分かってない情シスが仕事してるフリするために何かレビュー指摘しようとして手をつけやすい。
(1%刻みで出力するけど10の倍数だけ太字にして目立たせろとか)
2021/09/10(金) 08:26:12.15ID:oazR15lu
もっとも最悪なのは残り時間予測だけどな。
windowsですらあと5分ですって出してから30分かかったり30秒で済んだりするくらいだからよほど単純な処理じゃないと間違える。
テキストファイルのロードみたいな単純な処理でもメモリ圧迫するような挙動だとだんだん重くなるみたいなことあるし。
2021/09/10(金) 11:45:28.24ID:NVBgm1WL
今までに作ったclassの中で一番行数が多いのってどれぐらいですか?
350行程度のclassでもちょっとわけ分からんようになってきたよ
818デフォルトの名無しさん
垢版 |
2021/09/10(金) 16:59:22.38ID:1odBdOt6
それはこのクラスにはこの系統の処理を置くよ という役割分担が上手くなくて
読むときに負荷がかかってるからだと思うぬ
2021/09/10(金) 22:42:11.14ID:VqIPySM9
Austria, Croatia, Republic of, Congo, Democratic Republic of the
上記のような文字列があってそれをリストと化したいんだけどカンマでsplitしたりすると
'Croatia, Republic of', 'Congo, Democratic Republic of the'ではなく
'Croatia', 'Republic of', 'Congo', 'Democratic Republic of the'になるけど解決方法がわからないので教えてください。c
2021/09/10(金) 23:04:37.11ID:6R6RVOqf
>>819
国名はそれそれ、Austria, Croatia, Congoで処理したいということ?
もともとのデータはリストだったの?
2021/09/10(金) 23:35:10.00ID:VqIPySM9
AustriaとCroatia, Republic ofとCongo, Democratic Republic of theの3つに分けたい
元々のデータはブラウザから手動で引っ張ってきてコピペした文字列なのでリストではないです
2021/09/10(金) 23:52:18.65ID:LLuPU2aV
機械的に処理するルールを決めることがプログラミングだよ
とりあえずコンマで分けたあと小文字単語があれば前とくっつける、とやってみたいけど
それで全部うまくいくかね
2021/09/10(金) 23:58:48.69ID:HeVTXR4t
オーバースペックだけど
英名の住所は正規化するAPIやモジュールがあるから
それつかった方が楽だし応用効くよ
2021/09/11(土) 00:22:54.56ID:ZpRElCEp
国名とそれ以外を分ける必要があるけど
別途国名のリストを拾ってきて、要素を検索しつつ仕分けすればできそう
まぁ、国名リストって時点でアンチョコ使ってるみたいですっきりしないのはおいといて…
825デフォルトの名無しさん
垢版 |
2021/09/11(土) 06:02:28.90ID:Ka5OzmL8
あんちょこって何?
826デフォルトの名無しさん
垢版 |
2021/09/11(土) 08:06:33.32ID:A67k4NSD
pythonスクリプトを直接python test.pyって実行すると動くんですが、
bashからtest.pyを起動しようとすると「No module named websocket」と表示され失敗します。
sys.path.appendすると今度は「No module named selectors」と表示されます。
どなたか対処法をご存知でないでしょうか?
環境はCloud9のAmazon Linux 2です。
2021/09/11(土) 09:44:22.44ID:IblrjkB0
そのエラーメッセージで検索すれば?
2021/09/11(土) 10:00:36.84ID:Dj6rAQzj
>>826
モジュール関係でエラーが出た時は
それぞれ一回をsys.pathを出力させて、モジュールの参照先がどうなってるか調べる
(大方実行時に参照してるライブラリのパスが変わってる)
2021/09/11(土) 17:38:25.32ID:YCQOaCey
>>825
カンニングみたいなニュアンス
この場合は、国名を分離するのに国名リスト使ったらそりゃうまく行くが、国名は200数個に限られているからその辺にいくらでも正しいデータ源が転がっているからいいけれど、
データ源を揃えきれないだろう世界の県名とかだったら成り立たず、うまくいかないだろうからモヤモヤするよねって感じだと思う

元のお題は自動処理するにはもともと筋悪だと思うけどね、バラになっちゃったやつを人間がチェックして結合するのが一番時間かからなくて確実そう
830デフォルトの名無しさん
垢版 |
2021/09/11(土) 18:26:28.45ID:A67k4NSD
>>828
ありがとうございます
確かに直接実行した時とbashから呼び出した時でパスが違っています…
何か違う環境として実行されているということなのか…
831デフォルトの名無しさん
垢版 |
2021/09/11(土) 18:31:53.67ID:A67k4NSD
bashから実行した時はなぜかpythonパッケージのパスが2.7になっているようです
2021/09/11(土) 18:59:07.20ID:Dj6rAQzj
>>831
LinuxとかMac環境で実行しようとしてるなら
python test.py ⇒Python2で実行する
python3 test.py ⇒Pyhthon3で実行する
っていう動きになる

とりあえずpython3 --version
を使って、そもそもpythonの3系が入ってるかを見た方が良い
入ってたら必要なライブラリをpython3 pip install〜で入れればOK
833デフォルトの名無しさん
垢版 |
2021/09/11(土) 19:02:25.20ID:A67k4NSD
>>832
ありがとうございます
python3指定で実行するようにしたら成功しました!
2021/09/12(日) 02:01:20.44ID:ysmJ7kfO
linuxなんかだと、pip3とかできないの?
835デフォルトの名無しさん
垢版 |
2021/09/12(日) 11:08:57.22ID:PNU8wIel
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
2021/09/15(水) 19:05:12.55ID:0q0CE+HI
スクレイピングすると地獄へ落ちるって本当ですか?
2021/09/15(水) 20:38:57.55ID:IoiHiFbB
392 名前: デフォルトの名無しさん (ワッチョイ 696a-dGLa) [sage] 投稿日: 2021/09/15(水) 19:01:39.47 ID:fHmj5hYp0
スクレイピングすると地獄へ落ちるって本当ですか?
9 名前: デフォルトの名無しさん (ワッチョイ 696a-dGLa) [sage] 投稿日: 2021/09/15(水) 19:02:48.45 ID:fHmj5hYp0
スクレイピングすると地獄へ落ちるって本当ですか?
294 名前: デフォルトの名無しさん (ワッチョイ e57f-dGLa) [sage] 投稿日: 2021/09/15(水) 19:07:23.60 ID:0q0CE+HI0
スクレイピングすると地獄へ落ちるって本当ですか?
2021/09/16(木) 00:25:58.50ID:i5BIJ4kk
君の人生はもう地獄行きが確定してそうだから不安がるなよ
839デフォルトの名無しさん
垢版 |
2021/09/16(木) 09:38:24.19ID:I3VTO38j
5ちゃんに一日1000回書き込むと極楽浄土が約束されます
2021/09/16(木) 12:46:14.58ID:AVL/loTg
sphinxのスレってwebpg板にもweb製作板にもここにも無いのか
2021/09/16(木) 12:56:20.01ID:ebDt5W+H
1)abc
みたいな文字列を")"の位置でsplitで分割したいとき、
1) と abc
のように分割文字も残したい場合、スマートな方法ありますか?
)でsplitして後から )を足す、という方法もあるかと思いますがなんかスマートでは無いですよね
re.splitならできるのかな?
2021/09/16(木) 14:15:16.89ID:AVL/loTg
re.findallでやってる例がググられた
843デフォルトの名無しさん
垢版 |
2021/09/16(木) 14:18:35.84ID:Q5AMtJ/i
re.findall(r'(.+\))(.*)', '1)abc')
[('1)', 'abc')]
2021/09/16(木) 14:22:48.45ID:AVL/loTg
と思ったらそのサイトの下のほうに
python3.7からre.split()で行けると
a="alpha,beta,gamma"
import re
re.split("(?<=,)",a)
845デフォルトの名無しさん
垢版 |
2021/09/16(木) 17:59:54.65ID:13aXyCX3
CentOS7(armv7l)
python3.6
/usr/localにgcc10.1.0インストールして/usr/lib/libstdc++.so.6を6.0.19→6.0.28に張り替えてある

pandasのバージョン下げたりしてみたけどimportの段階で駄目でした
誰か原因分かりますか?


$ LD_PRELOAD=/usr/local/lib/libstdc++.so.6 pipenv run python3 test.py
成功

$ pipenv run python3 test.py
失敗

import pandas._libs.window.aggregations as window_aggregations
ImportError: /usr/local/lib/libstdc++.so.6: undefined symbol: libiconv

<test.py>
import pandas as pd
url = 'ヤフーファイナンスのurl'
print(pd.read_html(url))

$ ls -l /usr/local/lib/libstdc++.so.6
/usr/local/lib/libstdc++.so.6 -> libstdc++.so.6.0.28
2021/09/16(木) 18:14:47.89ID:TQVwbqUl
nm でそのlibをスキャンしてみたら?
libiconvはどこにつながっている?
847デフォルトの名無しさん
垢版 |
2021/09/16(木) 18:59:56.78ID:13aXyCX3
>>846
libiconvはUで確かに未定義でした
848デフォルトの名無しさん
垢版 |
2021/09/16(木) 23:14:17.32ID:KHTFd4df
pyton3上で地図に棒グラフを立てたいと思い、cesiumpyにたどり着きました。
インストール後、import cesiumpyを実行したことろ、
AttributeError: partially initialized module 'cesiumpy' has no attribute 'data' (most likely due to a circular import)
と出ます。回避方法等ご教示くださいませ。
2021/09/16(木) 23:18:50.22ID:wbqs1W10
マイナーなライブラリについて質問しても答えてくれる人いないよ
circular importとか書かれてるけど、まさかそのファイル名がcesiumpy.pyだったりしないよね
850デフォルトの名無しさん
垢版 |
2021/09/16(木) 23:31:37.25ID:KHTFd4df
>>849
ファイル名は違うものですが・・・マイナーなものは難しそうですね。
ご助言ありがとうございました。
851デフォルトの名無しさん
垢版 |
2021/09/17(金) 08:59:56.61ID:UtF7UwZj
>>848
dependencyは満たしているか?
852デフォルトの名無しさん
垢版 |
2021/09/18(土) 01:57:16.35ID:lb+sAgRD
スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります
2021/09/18(土) 02:04:45.09ID:75qnM2AM
>>852
自治体とコインランドリーに許可を取れ
ちゃんと筋を通せば金になるかもしれんぞ
854デフォルトの名無しさん
垢版 |
2021/09/18(土) 08:28:17.55ID:bA/qQPAi
>コインランドリーの稼働データを集計して空いてる確率が高い時間帯

台風の最中は空いてそうだ
2021/09/18(土) 08:29:01.24ID:BxqtlgPJ
正攻法は>>853だけど裏技的にやるんだったらMVNOのSIM契約してipとかUAを変えながらスクレイピング。
向こうも機械アクセスだと気づきにくくなる。
ただカムフラしてまでやろうとしたということで相手に迷惑かけるかもって気持ちが入ることになるから訴えられたときには不利になる。
2021/09/18(土) 08:41:27.45ID:+7IeVSKz
>>852
図書館の例があるから無許可はもう何しても危ないよねっていうのが共通認識だと思うよ
857デフォルトの名無しさん
垢版 |
2021/09/18(土) 09:09:44.75ID:2a7FPWkS
フォルダ内のファイルをenumerate()で一括連番リネームします
リネーム後の名前が既存かもしれないとき

1回目のループでexistsならパスとリネームを記録,大丈夫ならリネーム
2回目のループで記録したパスをリネーム

これで重複回避して全件リネームできますか?
手元ではできてる気がするんだけど,例外パターンがあるような気がする
(windowsのロングパスとか編集不可属性とか並び順の話は置いといてください)

--
元 : 新
000.txt → 1.txt
00.txt → 2.txt
1.txt → 3.txt
3.txt → 4.txt
こういうことがしたいのです
2021/09/18(土) 09:33:30.24ID:jUwIv+ht
e.txtがすでに存在していたらどうするん?
2021/09/18(土) 09:34:02.57ID:jUwIv+ht
3.txtの間違い
2021/09/18(土) 09:44:49.40ID:lb+sAgRD
>>853-856
回答ありがとうございます
心配性なので許可を取る以外のリスク回避策も知りたいのです
例えば、プログラム書いてもバグでF5アタックレベルの猛烈なアクセスをすることってありえますよね
そういうのが起きないような安全装置の作り方
自前で作ったサーバにも同時にアクセスしてアクセス頻度を証明するログを取る(v6共有IP巻き添え捜査対策)
何らかの理由で訴えられたとき勝つための材料を集めておく
などの方法を教えてくれる書籍がないかと探しています
2021/09/18(土) 09:46:54.79ID:BxqtlgPJ
.netだとtempのファイル名を持ってくるメソッドがあったな。
個人用途でリネーム中に他人がファイル名を変更するという懸念がない条件ならランダム英数字の中間ファイル名を経由してリネームすればいいんじゃない?
企業ユースとかでしっかりやる必要のある処理かつリネーム中の障害とかまで考えるなら安直なリネームは処理中の状態が不安定だから禁忌だと言われるね。
ファイルコピーすると同時に名称変更してリネーム後のファイル群を作り完成したところで元ファイルを削除みたいな動作にする。
(もちろんスピードやディスク容量とかの要件とも相談)
2021/09/18(土) 09:56:28.76ID:dDlDUvsj
対象フォルダにtmpフォルダ作ってそこにリネームして入れていけばいいんじゃ
2021/09/18(土) 09:56:58.79ID:9Dfq3hh+
>>857
その方法だと下の3行のリネームも無理じゃね
0.txt→ 1.txt
1.txt→ 2.txt
2.txt→ 3.txt
俺は、1回目でリネームできないときは
uuid.uuid4().hex を付加してリネームして
2回目で、uuid.uuid4().hexを付加したファイルを、目的のファイル名にリネームしてる
864デフォルトの名無しさん
垢版 |
2021/09/18(土) 10:04:11.39ID:bA/qQPAi
>>857
000.txt -> 1.txt -> 2.txt -> 3.txt -> ... って無限に繰り返す危険は0と言い切れる?
865デフォルトの名無しさん
垢版 |
2021/09/18(土) 10:44:49.91ID:2a7FPWkS
>>863
あーそうか…
じゃあexistsのときはunique_suffix付きでリネームして
最終的にケツ削る感じにします
uuid知らなかったんですが、いいですねこれ
今回は259文字制限下なのでアレだけど勉強になりました
2021/09/18(土) 12:17:29.33ID:9Dfq3hh+
>>865
ちなみに、existsするのがフォルダだった場合処理できないよ
2.txtみたいな名前のフォルダ・・・
2021/09/18(土) 13:21:25.11ID:IiEq2a0h
>>852
素人は、本番サーバーでテストしてはいけない。
素人のアプリは、バグで無限ループして、何万回もアクセスするから

必ずダウンロードして、自分のPC 内でテストしないといけない

それと本番サーバーに、100回とか繰り返しアクセスする場合は、
必ず、相手のrobots.txt を遵守すること!

または、相手と契約して、API を使うこと

基本、スクレイピングは営業妨害との戦い。
どの本にも、そう書いてある。
スクレイピングを推奨する本はない

必ず、robots.txt 遵守か、許可を得る、または契約すべき

山浦清透、2021/6

【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI

この動画では、Laravel で、マイナビ転職をスクレイピングしている。
27:40 から、robots.txt を調べている
868デフォルトの名無しさん
垢版 |
2021/09/18(土) 13:56:07.34ID:LBCfu3j9
どの本にも〜とか言う割に本は挙げないのな
2021/09/18(土) 15:25:34.95ID:ZDaB5e5K
selenium(ChromeDriver)で
すでにbuttonのWebElementまで取得している状態で、単にそれがクリック可能になるまで待つときはどう書けばいいの?
イメージは↓こんなだけどWebElementは引数に与えられないみたい。
WebDriverWait(driver, 5).until(
EC.element_to_be_clickable(button)
)
2021/09/18(土) 15:34:01.38ID:aJjTmiOO
改めて locator を与えればいいんじゃね?
2021/09/18(土) 15:58:23.33ID:9lUPAjpA
ある条件を満たした時にプログラムを再起動したくて
subprocess.call(__file__, shell=True)
と記述してるんですが挙動がおかしいです
どうおかしいのかと言うと、プログラムを強制終了したい箇所で
sys.exit()
と記述してるんですが、そこでも再起動されてしまいます
どう改善したら良いでしょうか
2021/09/18(土) 16:03:37.86ID:ZDaB5e5K
>>870
WebElementオブジェクトからlocarorって取得可能?
今回のbuttonが、findで一意に特定できないエレメントだから、Waitの例でネットによく書いてあるBy.xxxの書き方だと、複数のbuttonがWaitの対象になってしまうんだよね
特定の1つのエレメントだけをwaitの対象にしたいのだが
873871
垢版 |
2021/09/18(土) 16:03:39.53ID:9lUPAjpA
>>871の補足です
subprocess.call(__file__, shell=True)
で、一度再起動した後で、
sys.exit()
を実行すると、強制終了しないで再起動してしまう挙動を何とかしたいということです
2021/09/18(土) 16:17:13.98ID:9lUPAjpA
自己解決しました
>>871>>873の質問は撤回します
2021/09/18(土) 17:09:13.84ID:jUwIv+ht
どう解決したのか書くのが礼儀やで
876デフォルトの名無しさん
垢版 |
2021/09/18(土) 18:13:33.17ID:J85RgKD5
頭のおかしい人に以下のようなことを言われました

>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない

具体的な書籍名を教えてください


>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない

どこでそんなルールが決まっているのでしょうか?
2021/09/18(土) 18:30:17.02ID:6JilEPez
マルチポストすんな
2021/09/18(土) 18:53:11.55ID:b0edjBZj
>>876
お前頭悪そうだな
2021/09/18(土) 18:54:45.08ID:+/kaLHzE
>>876
> どこでそんなルールが決まっているのでしょうか?
決まってないよ
ただ普通の頭持ってたらマルチポストが回答者に失礼だと言うことはわかるはず
2021/09/19(日) 04:35:52.74ID:rCAdh0cW
>>876
Rubyガイジに頭悪いと指摘されるとか相当だぞ
肉塊の方が賢いまであるなw
2021/09/19(日) 05:44:05.93ID:yvbuOcQZ
肉塊って何?
2021/09/19(日) 06:35:05.82ID:XiUCEd2G
>>872
カスタム待機条件を作って elem.is_enabled() を返すのは?
2021/09/19(日) 15:05:50.16ID:snblcpQq
>>882
なるほど、カスタム待機条件というのがあったか。
これでエレメント引数にした待機できた。ありがとう
2021/09/22(水) 08:26:17.31ID:ykk+hhl9
Python3.9.7で、テキストボックスに右クリックメニューをつけたいのですがうまくいきません

input1 = tk.Entry(root,textvariable = x1_str, width = 5)

def show_right_click_menu(e):
____w = e.widget
____right_click_menu.entryconfigure("切り取り",
____command=lambda: w.event_generate("<<Cut>>"))
____right_click_menu.entryconfigure("コピー",
____command=lambda: w.event_generate("<<Copy>>"))
____right_click_menu.entryconfigure("貼り付け",
____command=lambda: w.event_generate("<<Paste>>"))
____right_click_menu.entryconfigure("削除",
____command=lambda: None if 0 else w.delete(w.index("sel.first"),w.index("sel.last")))
____right_click_menu.entryconfigure("すべて選択",
____command=lambda: w.select_range(0, "end"))
____right_click_menu.tk.call("tk_popup", right_click_menu, e.x_root, e.y_root)

選択していない状態で削除を実行すると下記エラーがコンソールにでます
_tkinter.TclError: selection isn't in widget .!entry

エラーが表示されないようする方法をご教示いただけませんか
エラーが表示されるだけで問題なく動いていますが気持ち悪いので
2021/09/22(水) 16:50:16.15ID:wN494UoL
pythonで、いわゆるDBのコネクションプールのような、限られた複数資源をプールにして使い回す基本的な仕組みって何かありますか?
DBで使うわけではないので汎用的なものを想定してます
たとえば資源として5つのインスタンスがあり、要求側はそれのいずれかが空いていれば排他的に1つのインスタンスを獲得し、すべて獲得済みの場合は任意の時間待機させる、というイメージです
要求側は必要な処理が終わればインスタンスをプールに返します
キューを使ってできそうな気がしますがもう少し実装しやすいものとかありますかね?
2021/09/22(水) 20:35:20.60ID:N9zBagLQ
>>885
しったかで書く
PyPIで多数ヒットするけど逆にこれってのはないからインターフェイスの好みで選択
どうせ中身はQueueかdeque
DB接続でいうとドライバやミドルウェアにだいたい専用のが付いてくる
2021/09/22(水) 23:15:37.85ID:rplKfx8l
>>886
ヒントありがとう
PyPIで見たら確かにだいたいqueueで実装されてた。ソース参考にして実装してみます
2021/09/23(木) 01:31:50.40ID:ERg2ncYO
Pythonも最近ではそんな真面目な用途でも使われそうな感じになってきてるのか。
おじさんびっくりだわ。
889デフォルトの名無しさん
垢版 |
2021/09/23(木) 02:31:58.77ID:GanDJT5R
独学プログラマーを読んで勉強始めた方いますか?
Amazonレビュー見ると意味不明なURLや冗長な表現など初心者を惑わせる表記があるようで
初心者向けとは言えないような印象を受けますが、通しで読むとちゃんと初心者向けになってるのでしょうか?
890デフォルトの名無しさん
垢版 |
2021/09/23(木) 09:05:11.72ID:aonnyzzk
self taught programmerは英語版をパラパラと眺めた程度だけど、悪い本じゃないと思う
どの教材にも欠点はあるから、多少のことは気にせずにさっさと取り掛かったほうが良いと思う
初心者が自分にとって完璧な教材を見つけるのは無理

他の本のほうが良さそうなら他のでもいいし、無料のweb教材でもいいし
2021/09/23(木) 09:37:27.55ID:aonnyzzk
ちなみに『独学プログラマー』は「自力でプログラムを覚えて仕事を始めるまで」が一番大きなテーマであって
pythonのことを手取り足取り教える目的で書かれたものではない

単純にpythonの基本を学びたいだけなら、もう少し狭い内容を扱った他の本が良いかもしれない
892デフォルトの名無しさん
垢版 |
2021/09/23(木) 11:14:45.24ID:zah9lHsX
そもそも独学出来るようなプログラマーならそんな本読まなくても出来るからな
2021/09/23(木) 12:55:36.27ID:aonnyzzk
>そもそも独学出来るようなプログラマーならそんな本読まなくても出来るからな

これはその通りで、基礎的なことは全部ネットに無料で落ちているので、わざわざ本を買う必要はない。
本で学ぶのが好き、って人もいるだろうから全否定するつもりはないけど。
2021/09/23(木) 13:12:18.93ID:3iEJN86R
spring bootは本買わないと無理あのntt data様が出してる奴
2021/09/23(木) 15:24:28.97ID:Hq81xlZ0
>>888
LAMP(Linux,Apache,MySQL or MariaDB,PHP or Perl)のPがPythonに移行されつつある
DBの方もPostgreSQLに変わりつつある
2021/09/23(木) 15:26:56.89ID:xxtNZLaL
LAPP?
2021/09/23(木) 15:40:45.97ID:w4tdfW/t
ApacheもNginxに移行
2021/09/23(木) 15:50:02.39ID:Ru7FlOs1
Apache も Nginx に移行してるから LNPP かな?
2021/09/23(木) 15:55:26.37ID:Sp5Iyysf
いまさらPostgresが主流になるような感じはしないがな。
DBMS全体でPostgresのシェアは上がってきているがMySQLも同様にシェアを拡大している。
そもそも普及率が倍くらい違うし。
2021/09/23(木) 16:00:23.97ID:Hq81xlZ0
MySQLはOracle→MySQLに意図的にOracleが動いてるみたいね
2021/09/23(木) 16:18:46.38ID:Ru7FlOs1
まあ倍半分違う(対数スケールなので注意してね)からそうそう主流が入れ替わることはないと思うけど PostgreSQL と MongoDB が頑張ってるな
https://news.mynavi.jp/article/20200403-1009423/images/002l.jpg
2021/09/23(木) 16:20:47.11ID:/gKnAjHi
postgreSQLは最近覚えたけどそこまでメリットは感じない
pythonから叩くにあたってmysqlから面倒くさい部分は増えた
2021/09/23(木) 17:48:30.88ID:LWGez+JK
pip listでsympyが確認できるのに

>>> import sympy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sympy'

となるのはなぜですか?
2021/09/23(木) 18:00:58.85ID:3iEJN86R
インタープリターに入らずにpip install sympyだって前ここで誰かが言ってた気がする
2021/09/23(木) 18:05:30.32ID:cmFu96z6
実行したpipはver2系だったってのは(俺が)割とよくやるミス
2021/09/23(木) 18:08:54.09ID:Hq81xlZ0
>>902
PostgreSQL用ドライバ必要だからな
2021/09/23(木) 18:23:39.46ID:QMUWvoXV
>>905
同じく
そのためのpip3だけどね
2021/09/23(木) 19:48:46.26ID:ERg2ncYO
MySQLは単純かつ高速に動かしたい時は鉄板
2021/09/23(木) 20:52:10.59ID:LWGez+JK
>>904
>>905
pipでもpip3でももうインストールされていますみたいなメッセージが出ます
2021/09/23(木) 22:25:39.27ID:Ok65a0lv
>>884
自己解決しました
def show_right_click_menu(e):
____w = e.widget
____def show_right_click_menu_delete():
________nonlocal w
________try:
____________w.delete(w.index("sel.first"),w.index("sel.last"))
________except:
____________pass
____right_click_menu.entryconfigure("切り取り",
____command=lambda: w.event_generate("<<Cut>>"))
____right_click_menu.entryconfigure("コピー",
____command=lambda: w.event_generate("<<Copy>>"))
____right_click_menu.entryconfigure("貼り付け",
____command=lambda: w.event_generate("<<Paste>>"))
____right_click_menu.entryconfigure("削除",
____command= show_right_click_menu_delete)
____right_click_menu.entryconfigure("すべて選択",
____command=lambda: w.select_range(0, "end"))
____right_click_menu.tk.call("tk_popup", right_click_menu, e.x_root, e.y_root)

tkinterがよく分からない
次は、undo redo をなんとかしたい
2021/09/24(金) 00:17:26.60ID:wqDlteq1
>>867
レス遅れてしまい申し訳ありません
時間つくっていくつか書籍を立ち読みしてみましたが
訴えられる前提でスクレイピングする本は当たり前のようにありませんでした
テストサーバでプログラム作ってから、相手に連絡した上で動作させるのが最低限のマナーで
あとはもう自分で創意工夫して逮捕防ぐしか無いですね
2021/09/24(金) 08:20:48.10ID:KibxKmAg
>>730
このpython3.8だとproxy繋がるけど3.9だとダメになる問題は自分自身で解決しますた。
https://github.com/psf/requests/issues/5740
こことかそのリンク先に書いてある。
社内環境でセキュリティのためproxyでHTTPS通信を復号化してるんだけどそんな特定条件で起こるらしい。
.condarcのhttpsのproxyをサンプルを真似してhttps://hogehogeって書いてたけどhttpに修正したら繋がるようになった。
2021/09/24(金) 08:36:42.56ID:EhTNSQ6t
ニシキヘビともんごイカか
LNPyM
2021/09/24(金) 09:00:12.81ID:sjjiTDvK
pandasで下の様なデータフレームOLD,NEWがあります。
df_OLD
 商品名 価格 種類
0 バナナ 100 フルーツ
1 トマト 150 野菜

df_NEW
 商品名 価格 種類
0 バナナ 120 フルーツ
1 トマト 130 野菜

OLDとNEWを商品名で比較して、一致した場合にNEWの値と置き換えたいときってどの様にしたら良いのでしょう?
一気に比較してくれる方法とかあるんでしょうか?
1行ずつ比較しないといけないのでしょうか?
2021/09/24(金) 09:05:37.12ID:wqUtxwi5
>>914
価格の値を更新すれば良いのかな?
pandas.DataFrame.update でいかがでしょう

公式
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.update.html

日本語の参考記事は適当に検索すれば出てくる
2021/09/24(金) 09:08:51.13ID:KibxKmAg
updateは?
2021/09/24(金) 09:29:05.87ID:sjjiTDvK
>>915-916
後出しみたいになって申し訳ありません。
update試しましたが、同一行を置き換えるのですね。

やりたいこととしては、NEWの方は並び順は一致せず、
さらに新規データの追加やキーとなる列(商品名)以外の内容の変更もしたいのです。

df_NEW
 商品名 価格 種類
0 スイカ 150 野菜
1 バナナ 120 フルーツ
2 トマト 130 野菜B
2021/09/24(金) 09:37:04.32ID:wqUtxwi5
やりたいことが良く分からないんだけど

(1) df_NEW のデータは全て保持したい
(2) df_OLD にあるもので、df_NEWに無いものはdf_NEWに追加したい

という解釈でも良いのかな?
それなら df_NEWと df_OLD の差分をとって、そのうちdf_NEWに欠けているものをdf_OLDから追加するという方法でも良い?
2021/09/24(金) 09:38:42.26ID:sjjiTDvK
>>918
わかりづらくてすみません。
・OLD側に同じ商品名があればNEWの内容で更新。
・ NEWにしか無い商品はOLDに追加です。
2021/09/24(金) 09:43:23.68ID:wqUtxwi5
>>919
df_NEWというのはすでにpandas.DataFrameの形で持っているということで良いですか?
その場合、df_NEWに入っている値は全て正しい(更新する必要はない)ということになりますよね。おそらく。

それならdf_OLDを更新するという発想にこだわる必要はなくて、NEW無いものをOLDから追加するという発想に転換しても良いのでは?
その場合、私ならmergeを使うと思います。

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html
2021/09/24(金) 09:46:08.06ID:sjjiTDvK
>>920
ありがとうございます。なるほど、そっちの考え方の方が良さそうですね。
ちょっと試してみます。わからなかったらまた質問させてください。
2021/09/24(金) 10:15:48.12ID:sjjiTDvK
現状のままだと、希望結果=NEWになってしまうので少し変更して試しました。
df_New2=pd.merge(ldf_New ,ldf_Old,on=['商品名'],how='outer')
df_Old**************************************************
商品名 価格 種類
0 バナナ 100 フルーツ
1 トマト 150 野菜
2 人参 50 野菜C
df_New**************************************************
商品名 価格 種類
0 スイカ 150 野菜
1 バナナ 120 フルーツ
2 トマト 130 野菜B
df_New2**************************************************
商品名 価格_x 種類_x 価格_y 種類_y
0 スイカ 150.0 野菜 NaN NaN
1 バナナ 120.0 フルーツ 100.0 フルーツ
2 トマト 130.0 野菜B 150.0 野菜
3 人参 NaN NaN 50.0 野菜C
2021/09/24(金) 10:16:10.57ID:sjjiTDvK
しかし希望する結果は以下のとおりです。
この様にしたい場合どうしたら良いのでしょう?
df_New2**************************************************
商品名 価格 種類
0 スイカ 150.0 野菜
1 バナナ 120.0 フルーツ
2 トマト 130.0 野菜B
3 人参 50.0 野菜C
2021/09/24(金) 10:17:19.90ID:sjjiTDvK
すみません。式は以下です
df_New2=pd.merge(df_New,df_Old,on=['商品名'],how='outer')
2021/09/24(金) 10:34:25.61ID:KibxKmAg
日本語で仕様が決まったらまたご相談くださいって感じかな。
その場合はこうして欲しいってのがコロコロ変わりそう。
2021/09/24(金) 11:00:59.24ID:+y7bOBPx
正規表現のfindall()の挙動について質問です
内線を含む電話番号に対する正規表現パターンを用意(現在使用している参考書のコピペ)し、
適当な番号を与えfindall()で取得したリストを出力しました
コードは↓に
https://techiedelight.com/compiler/?22O5

結果としては print(regex.findall('012-345-6789 x 123')) に対し、出力が
[('012-345-6789 x 123', '012', '-', '-', ' x 123', 'x')]
 だったのですが、何故こうなるのか解りません

'012-345-6789 x 123', '012', '-', までは解るのですが、なぜそのあと '345' や '6789' が取得されず、
また、'x 123' の取得後に 'x' だけが取得されるのでしょうか
2021/09/24(金) 11:27:05.39ID:fM0vlPdr
必要な部分は()で囲え
不要な部分は(?:)にしろ
2021/09/24(金) 12:00:20.17ID:+y7bOBPx
>>927
あ〜〜途中の \d{3} などは () で囲われてないからグルーピングされてないために弾かれちゃってたんですね
以下のようにして
https://techiedelight.com/compiler/?SVye
以下の出力結果を得ることができました
[('012-345-6789 x 123', '012', '-', '345', '-', '6789', ' x 123', 'x')]

最後に取得されている x については (?:) を使用するんでしょうか?
(?:) という記法についてまだ知らないので調べてみます

レスありがとうございました
2021/09/24(金) 12:10:24.86ID:sjjiTDvK
いろいろ試して、以下で思う様な結果を得る事ができました。
アドバイスありがとうございました。
df_New2=pd.merge(df_New,df_Old,on=['商品名'],how='outer',suffixes=("","_d"))
df_New2['価格'].fillna(df_New2['価格_d'], inplace=True)
df_New2['種類'].fillna(df_New2['種類_d'], inplace=True)
df_New2.drop(['価格_d','種類_d'], axis=1)

上記2行目と3行目ってまとめて書いたり、”_d”で終わる列とかで指定できるのでしょうか?
2021/09/24(金) 12:12:56.73ID:/f3Q922M
>>923
それだったら、同じ商品名のデータを上書きするっていう考え方じゃなくて、
oldだけに有ってnewに無いデータだけ抽出して
それをnew側のdfにくっ付けるってやり方があるかな

一応、想定通りには動くけど
大分不細工なやり方になっちゃったから許して……
https://ideone.com/oxdsR3
2021/09/24(金) 12:23:17.91ID:sjjiTDvK
del_old_df = old_df[old_df["商品名"].isin(new_df["商品名"])]
こんなこともできるんですね。ありがとうございます。
こっちの方がてっとり早いですね。
2021/09/24(金) 16:46:18.89ID:EhTNSQ6t
sympyがあれば中学の数学の基礎までなら
2021/09/24(金) 17:00:32.91ID:41w/BiYs
>>909
pip show sympy
のLocationと
import sys, pprint
pprint.pprint(sys.path)
を見比べてみよう
2021/09/24(金) 17:01:28.66ID:ZghczHx7
ファイルの最後の行に
return 1
と書くと、「SyntaxError: 'return' outside function」
というエラーが出てしまいます
ファイルの最後の行に書く必要はないってことですか?
2021/09/24(金) 17:02:20.29ID:LxZpM9VS
書く必要がないではなく書いてはいけない
2021/09/24(金) 17:06:17.94ID:ZghczHx7
関数の最後の行には書くのに
ファイルの最後の行に書いちゃいけないのは何故ですか?
2021/09/24(金) 17:13:47.22ID:YQZl96Xn
どこに戻るんだよ?
2021/09/24(金) 17:15:32.95ID:ZghczHx7
では、親プロセスに戻る時に
どうやって戻り値を返すんですか?
2021/09/24(金) 17:36:24.36ID:TJ6IbgR5
sys.exit()
2021/09/24(金) 18:11:39.61ID:ZghczHx7
>>939
そうやるんですか
ありがとうございます
941デフォルトの名無しさん
垢版 |
2021/09/24(金) 19:58:52.71ID:cH5BLcev
もしかして

1 名前順並び
2 ファイル名は任意
という条件で
指定したファイルの1つ下に新規ファイルを保存する
って難しいですか?
makeChildPathName()みたいな関数が作りたい

https://i.imgur.com/Oa07h0G.png
2番目のファイルパスを指定したら2番目と3番目の間に新規ファイルを挿入保存したいということです
2021/09/24(金) 20:28:15.14ID:zSlDj9mb
任意のフォルダ下のファイル名を取得して自分で並べ替えて挿入すればいいじゃん。
自分だったらWindowsのファイルの並び順の仕様を調べてPython側で同じように並べ替える。
それがめんどくさければsubprocessでDIRの結果を取ってくる。
「間に入るように」の部分は仕様が不明確だから答えようがない。
もし仕事なら_001とかつければいいと思ってるなら危険。
挿入されるファイルの規則に沿ったファイルがあらかじめ存在した場合にどうすればいいのかとか元のファイル名がパス260文字のギリギリまであったらどうするかとかまで詰めないと。
943デフォルトの名無しさん
垢版 |
2021/09/24(金) 21:20:10.36ID:/dwjMJ8P
>>942
path1<new<path2
になる文字列の自動生成でしょ
無理じゃないか
windowsは仕様公開してないし
2021/09/24(金) 21:53:51.05ID:Kyc5NeAQ
>>943
元のファイル名は、数字のみといった規則があればできるかも
汎用的なのはリネームしないと挿入できないケースもあるしめんどいね
パスの長さの規則もないと辛い
2021/09/25(土) 06:29:33.65ID:dHZYhTax
plot_surfが僅か3600座標の描画で20分以上掛かる
点の散布図なら100万座標でも1分未満だが
946デフォルトの名無しさん
垢版 |
2021/09/25(土) 11:31:35.29ID:lBxoEpbF
windowsはcmdプロンプトでdirした順番と
explorerで観れる順番がそもそも違うし
sortしても解決しないω
947デフォルトの名無しさん
垢版 |
2021/09/25(土) 11:32:33.68ID:lBxoEpbF
>>945
meshにしてる?
948デフォルトの名無しさん
垢版 |
2021/09/25(土) 14:13:18.95ID:hl+7wKHR
>>946
explorerでってんだからAPIソート1択でしょ。そこは
949デフォルトの名無しさん
垢版 |
2021/09/27(月) 19:04:05.97ID:EG3c4N9U
辞書のkeyに対するリスト型のvalueを使いやすいように良い感じに分解したい、または取り出したいんですがどうやれば良いんでしょう?
950デフォルトの名無しさん
垢版 |
2021/09/27(月) 19:15:37.57ID:UiRgP5VH
ちょっと何言ってるかわかんない
951デフォルトの名無しさん
垢版 |
2021/09/27(月) 19:23:20.36ID:EG3c4N9U
値がリストなんですよ
2021/09/27(月) 19:26:32.30ID:h2Q4WFZZ
ただの2次元データだから
keyとリストのindexで2回解決したら任意のデータにはたどり着けるけど
どう扱いたいのか目的がわからんとなんとも
2021/09/27(月) 19:38:34.45ID:E71fEMCh
>>951
リストなら分解する必要なくね?
954デフォルトの名無しさん
垢版 |
2021/09/27(月) 21:43:37.37ID:EG3c4N9U
分解しないでどうやって辞書の値のリストを取り出せば良いのですか?
2021/09/27(月) 21:45:21.63ID:hDBwg8Mc
>>954
>>950
2021/09/27(月) 21:48:03.64ID:NoJANVQi
どっかのサイトからパクってきた

data = { "in_channels": [1024, 1024, 512, 256, 128], "out_channels": [1024, 512, 256, 128, 64], "upsample": [True, True, True, True, True], "resolution": [8, 16, 32, 64, 128], "attention": { 8: False, 16:False, 32:False, 64:True, 128:False } }

for seq in zip(*(v.values() if type(v) is dict else v for v in data.values())):
print(seq)
2021/09/27(月) 21:55:01.96ID:NoJANVQi
>>954
ああこういうこと?
arr = {key1: [1, 2, [['target', ...], ...], ...}
print(arr[0][2][0])
2021/09/27(月) 22:01:54.51ID:h2Q4WFZZ
取り出すというのが削り出すの意味なら
>>> d = {2: [21,22], 3: [31,32,33], 4: [41,42,43,44]}
>>> d.pop(3)
[31, 32, 33]
>>> d
{2: [21, 22], 4: [41, 42, 43, 44]}
2021/09/27(月) 22:05:54.30ID:NoJANVQi
間違えた

arr = {'key1': [1, 2, [['target', ], ], ], }

print(arr['key1'][2][0])

私も勉強中です
960デフォルトの名無しさん
垢版 |
2021/09/27(月) 22:10:19.33ID:EG3c4N9U
全然わかんないっす…w
イメージ的には辞書に、test1とtest2というキーがあって、
test1のvalueがリスト形式で
name, tanaka
age, 30
のときに
printでnameとtanaka を表示させたいです
961デフォルトの名無しさん
垢版 |
2021/09/27(月) 22:21:28.01ID:2GjWPTj5
>>960
https://ideone.com/
ここにその辞書データを書いてきて
2021/09/27(月) 22:33:02.74ID:jqnAXCBZ
>>960
実際のデータ構造をちゃんと書いてもくれんと全く分からんぞ
レス通りの内容だとこんな感じになるけど、明らかにデータ構造が変だし
https://ideone.com/wmN9cT
963デフォルトの名無しさん
垢版 |
2021/09/27(月) 23:04:44.30ID:EG3c4N9U
おお、こんなサイトあるんですね
ちょっと勉強がてら実データ入れてやってみます!ありがとうございます
2021/09/28(火) 00:08:18.44ID:6t0zGqaE
>>962
>>> for _, name, _, age in data.values():
... print(name, age)
...
tanaka 30
suzuki 28

>>> for key, [_, name, _, age] in data.items():
keyがほしれば
2021/09/28(火) 08:23:37.75ID:QDSiHXp+
>>960-961
この流れ完璧に各地の現場で毎年繰り返される先輩と後輩の間のやりとりだな。
こうしたいんですって説明させることで質問者の脳みそが活性化されて問題の90%くらいは解消される。
残り1割は便利なメソッドややり方を知ってるかどうかだけという。
966デフォルトの名無しさん
垢版 |
2021/09/28(火) 12:44:54.83ID:EdXmOL1P
openpyxlで指定の範囲例えばA1:C5のセルの外枠だけ罫線引くのはどうすれば良いですか?
967デフォルトの名無しさん
垢版 |
2021/09/28(火) 14:22:03.09ID:nD0g4rLv
https://excel-ubara.com/python/python025.html
https://qiita.com/kumarstack55/items/9ae3432446afca06497f
https://sites.google.com/site/pythoncasestudy/home/pywin32kara-comwo-tsuka-tsu-te-excelwo-sousa-suru-houhou
968デフォルトの名無しさん
垢版 |
2021/09/28(火) 15:05:35.43ID:EdXmOL1P
>>967
んー、あまり参考にならなかったんですけど結局はセルの1つずつでしか罫線引けないんで
複数範囲のセルの外枠のみを引こうと思うとforで回して上下左右辺のみの時だけ対象の罫線引くって処理にするしか無いんですかね
2021/09/28(火) 15:19:16.11ID:936Pqhrd
だったら最初から1発で線引くことできますか?って聞けや
970デフォルトの名無しさん
垢版 |
2021/09/28(火) 15:28:04.89ID:EdXmOL1P
すみません、openpyxlで指定の範囲の外枠のみの罫線を1発で引く方法ありますか?
2021/09/28(火) 16:13:38.41ID:hcEOSxvd
ライブラリ純正のやり方ではない。
こういうの発明してる人がたくさんいるから見栄えが良いのを適当にどうぞ。

https://stackoverflow.com/questions/34520764/apply-border-to-range-of-cells-using-openpyxl
972デフォルトの名無しさん
垢版 |
2021/09/29(水) 11:36:55.19ID:H8LnbJn1
pythonのコマンドライン引数にJSON.stringifyした辞書を含む配列を渡すと、
辞書の中身が配列として分割されてしまいます。どうしたら辞書をそのまま渡せるのでしょう?

VSコードに渡した引数
"args":["[{¥"test¥":¥"a¥",¥"testB¥":¥"b¥"}]"]

argv[1]:'["test":"a"]'
argv[2]:’[“testB”:”b”]’
2021/09/29(水) 12:33:40.08ID:vWqip1VL
普通はコマンドライン引数に、JSON などのオブジェクトの構造物を渡さない。
構造物はファイルにまとめて、アプリ内で、そのファイルを読み込む

コマンドライン引数は、「a b c」みたいな空白区切りの文字列だけ
2021/09/29(水) 13:02:17.67ID:H8LnbJn1
ありがとうございます。
配列のみだと問題なかったので、大丈夫かと思っていました。
一旦書き出してから読み込むことにします。
2021/09/29(水) 22:33:50.89ID:J7GS4Ln7
AnacondaのidleがC:\〜〜\[username]\Anaconda3\Scripts\の中にあるのを
今更知ったw

多少のファイルを作りながら動かすなら一々JupyterやらSpyderやらを
重いなあと思いながら開かなくても良かったって事か
2021/09/30(木) 03:50:39.98ID:qnQatXiV
実はidle好きの俺もこれには歓喜!
977デフォルトの名無しさん
垢版 |
2021/09/30(木) 10:29:01.81ID:rsDh5L5E
base64使えば良い
978デフォルトの名無しさん
垢版 |
2021/09/30(木) 10:30:11.82ID:rsDh5L5E
>>975
Anaconda prompt も一緒にインストールされるだろ?ショートカットも出来てるだろ?
2021/09/30(木) 12:37:26.63ID:c7qiSj6D
>>977
この返しはベテランの香りがしますねぇ。
base58にすると通っぽいけど余計な混乱を巻き起こすから滅多なことでは使ってはいけない。
2021/09/30(木) 14:22:25.86ID:W8iUKo94
Anaconda promptだとファイルを作りながら実行って考えるならidleより面倒
981デフォルトの名無しさん
垢版 |
2021/09/30(木) 15:06:50.08ID:HC7iXZId
base64と言っても
. とか / とか使うパターン以外に
+ とか - とか使うのもあるし
都合が悪ければ適当にコマンドラインで安全なキャラクターを選んで良い
base64 の亜種
2021/09/30(木) 17:28:17.23ID:uM1Dq10V
idleってコメントをPEP8準拠(# )にできないの?
983デフォルトの名無しさん
垢版 |
2021/09/30(木) 20:12:26.79ID:afPZA96P
パソコン上で選択中のフォルダかファイルのパスを取得したいんだけど
各種ダイアログ経由しない方法ってありますか?

例えばGUIにコピペボタンを実装しといて
エクスプローラーでファイルクリック
GUIボタンクリックでその場に複写 みたいなことがしたいです
2021/09/30(木) 21:15:31.19ID:BqDA7lQW
SHIFTを押しながら右クリック→”パスのコピー”をクリック
985デフォルトの名無しさん
垢版 |
2021/09/30(木) 22:37:34.91ID:Q+Yf9LrK
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
986デフォルトの名無しさん
垢版 |
2021/10/01(金) 00:29:07.44ID:753Hv+uI
>>983
簡単にできるかと思ったけど難しい気がする
2021/10/01(金) 01:24:45.73ID:b9bDtpSh
macのFinderなら割りと簡単だけど
Explorerだと拡張書くか探すことになりそう
Pythonだけでは書けないし
2021/10/01(金) 03:14:59.71ID:4hZQhWFc
エクスプローラーは選択されてる状態でCTRL+Cでもクリップボードにフルパス入るから
キー入力メッセージ送ってクリップボード読めばいいんでね
2021/10/01(金) 03:45:28.03ID:LRVjWXLk
ドラッグアンドドロップじゃダメなの?
990デフォルトの名無しさん
垢版 |
2021/10/01(金) 06:32:34.44ID:753Hv+uI
要件はオブジェクトクリック、GUIクリックでしょ
間で操作入れるなら普通にダイアログ出せばいい
2021/10/01(金) 07:07:02.57ID:S6tJEmA+
その要件が普通じゃ無いこと気づけよー
エクスプローラーが複数立ち上がってたらどうするの?
ファイル選択できるのはエクスプローラー限定なの?

Windows のマナー通り、ファイル選択ダイアログを
出せば済む話だと思うんだが。
2021/10/01(金) 10:20:54.28ID:5A2oAz4+
>>975
VSCodeのPythonのpath欄にAnaconda(の特定環境の)python.exeのあるフォルダのアドレス(世に言うpath)を
入力すればいいだけ
2021/10/01(金) 10:42:33.79ID:js1izThg
エクスプローラーからSendToかドラッグ&ドロップだな

SendToはショートカットも割り当てられるのでキーボードだけでも操作可能
ただ起動中のGUIで受け取るためにはそれ用の受け口を用意しておく必要がある

コピペはUXとして微妙なので人に使わせるアプリならやめたほうがいい気がする
2021/10/01(金) 11:18:02.98ID:PaEGpo5A
例えば、デスクトップにショートカットを作って、Ruby スクリプトを起動する。
Explorer からファイルとフォルダを、ショートカットへdrag & drop すると

リンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/Ruby/desktop/a.rb

スクリプトの内容は、

puts ARGV # 配列

sleep # 出力したコマンドプロンプト画面を閉じないようにする

出力
C:\Users\Owner\Documents\あ.txt
C:\Users\Owner\Documents\a
2021/10/01(金) 11:25:55.56ID:b9bDtpSh
Ruby 2.5
status: eol
release date: 2017-12-25
EOL date: 2021-03-31
996994
垢版 |
2021/10/01(金) 12:53:42.59ID:PaEGpo5A
WSL2, Ubuntu 18.04 には、
日本人が作ったanyenv で、Ruby 2.6.6 をインストールしているけど、

Windows 用のMSYS2 のRuby では、Ruby 2.6 以降、
巨大なコンパイル環境を入れないと、コンパイルできないモジュールがあるので、やっかい

それで、Windows用Ruby は、2.5 を使っている

また、WSL2 には、drag & drop できない
997デフォルトの名無しさん
垢版 |
2021/10/01(金) 13:11:48.98ID:q6100VNR
>>983
でけたよ。
あらかじめpip install pywin32しておいてね

import win32com.client as win32
shell_app = win32.Dispatch('Shell.Application')
for win in shell_app.Windows():
print(win.LocationName)
for item in win.Document.SelectedItems():
print(f' {item.Name} ({item.Path})')
998デフォルトの名無しさん
垢版 |
2021/10/01(金) 14:43:29.34ID:QbIBSCAW
>>997
たいへん感謝しております
https://stackoverflow.com/questions/21241708/python-get-a-list-of-selected-files-in-explorer-windows-7/52959617
http://timgolden.me.uk/pywin32-docs/PyWin32.html
この辺も読んで精進します
999デフォルトの名無しさん
垢版 |
2021/10/01(金) 15:25:02.82ID:xAAYN8E1
Rubyはオワコン
1000デフォルトの名無しさん
垢版 |
2021/10/01(金) 15:37:18.54ID:xAAYN8E1
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 113日 18時間 31分 34秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。