【まず1嫁】くだすれPython(超初心者用) その54
レス数が1000を超えています。これ以上書き込みはできません。
当スレに★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 ### >>> a=10
>>> x=[a]
>>> x
[10]
>>> a=20
>>> x
[10]
>>> a
20
>>>
なんでxが[20]にならないの?
そうなるにはどうすればいいの? 数は書き換え不可の型なんで無理。
a自体を書き換え可能なオブジェクト、例えば配列に入れ込めば、似たようなことは出来なくもないが…
a = [1]
x = [a]
a = [2]
x >>2
>>> a = [10]
>>> x = [a]
>>> x
[[10]]
>>> a[0] = 20
>>> a
[20]
>>> x
[[20]] Pycharmの自動整形には参ったよ
Javaで作ったやつコピペしたらいろいろとやってくれる
リテラルなんか一文字消えてたり空白入れてみたり
実際走らせて気が付くレベル openで開いたファイルオブジェクトをforループで読み込む場合、forにオブジェクトをそのまま添えて一行ずつ読み込めるとのことですが
printするとオブジェクトがそのまま表示されてしまいます(_io.TextIOWrapper〜)
みんなのpythonのとおりにやっているつもりですが何がいけないのでしょうか?
python3.7.4を使用しています open(a.txt) as f
でfのメソッド使わないと
fがラッパー
そのプログラム見てみたい >>10
printの引数が間違っていた単純ミスでした
引数に読み込んだ一行の変数でなくオブジェクトの方を指定していました
ありがとうございました、またちょくちょく質問にくると思います >>9
with open(‘path/to/file') as f:
____for line in f:
________print(line, end="") コマンドライン上(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' VSCode や誰かのモジュールなどに、そういう拡張機能が無いの?
Python の質問と言うよりも、端末の設定の話 コマンドライン上プロンプトや補完機能の色付けとかはbashrcで全て管理してるので問題ない(色付け)です。
Pythonで便利な機能なスクリプト書いたので、そこから測れるか文字列を色付けする方法を知らなくて困ってました。 >>16です
補足でエディター上のシンタックスハイライトの設定ではなく
コマンドライン上の標準出力に色つけしたいという意味です。 黒魔術であるところのgetattrとか使えばラクに出来るんじゃね
pycolor."BLACK"
とかで呼び出したいんだろ
でも普通に考えれば連想配列を使う 何がしたいのかは分かったけど
今度は何でできないのか分からない class hogehoge:
#
#色の変数リスト省力します
#
def printWithColor(self, color, word):
print(color + word + END)
で出力したいのですが、仮にcolorに赤となる【\033[31m】を展開できないんです。。
selfを消すと引数エラーが出てしまい詰みます。。 windows10のコンソールはエスケープシーケンス効かないけどそれ?
とエスパーしてみる 漏れなら、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」などで検索してみれば? dic = {
"BLACK": '\033[30m',
"RED": '\033[31m',
"GREEN": '\033[32m'
}
連想配列にすればラクじゃん 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)
そして今度は何か縛り条件が出てくんだろ?
知ってる できました!!
ご協力いただいた方ありがとうございます!!
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"]) 単純に出力するんじゃなくて、bashに解釈させないとダメなんじゃないの?
echo -e "${python hoge.py}"
こういうイメージ こういうことを出来るのは知ってた
Windowsでやったことがある
C言語でターミナルで表示される文字をカラー表示させる : Serendip – Webデザイン・プログラミング
https://www.serendip.ws/archives/4635
スネークゲーム
http://vivi.dyndns.org/tech/games/snake.html >>27
このモジュールいいですね。
普段からshellscriptは書くのですが、pythonは触ったことがなく四苦八苦しておりました。。。
辞書検索 + 登録アプリでも作ろうかと思ってます。
無事出力出来ました。
みなさんありがとうございます!
https://imgur.com/lYUlTXs 色の問題じゃなくてpythonの使い方を知らなかっただけだ pythonでAndroidアプリを作ろうとしたら、どんな環境がありますか?
VSCodeで作れれば一番いいのですが、可能ですか? 作って作れないことはないけど苦行の極み
1からkotlin覚える方がまだ早いまである >>34 どうもありがとうございます。
調べてもなかなかないのは、そういう理由ですか。
大人しくAndroid Studioで作ってみます。
あとは、Transcryptでも調べてみるか… 凝ったの作らないならpythonで書いて変換系使ってもいいんだけど
ちょっとでも調子乗った瞬間に動かなくなるでな
主観ではpyinstallerの3倍は気を使う どんなのかにもよるけどandroidで動けばいいんならwebアプリ作ってブラウザで動かすて手もある
それならflaskでもDjangoでもいける Pythonでブラウザ内のJavaScriptが持つ変数の値を読みだすことは可能ですか? スクレイピングしたいのが自分で作ったwebアプリの値取得したいのか分からんけど
スクレイピングならPhantomjsかSeleniumでなんとかなるやろ
webアプリならそもそもjavascript経由せんと直接pythonで受け取ればいいのでは 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
しか分からないです…
できれば外部モジュールなしでおながいします なんで速いのが欲しいかというと
実際のl1〜l3が結構長くて
この裁ち落とし処理も複数回呼ぶから
馬鹿にならない感じなのです 内包表記3回書けばいいじゃん
それとdrop_indicesはsetにする アクセス時にdropするindexを考慮するとか。
def get_data(index):
index += sum(1 for x in drop_indices if x < index)
return l1[index]
テストしてないです >>43
新しくリストを生成せずに落としたい箇所をNoneにする方法で対応したら?
drop_indicesの要素数、変更対象リストの要素数、変更対象リストの個数(3個固定?)の
値の取りうる範囲や複数回呼ぶ意味によってどういう実装が望ましいかは変わってくる >実際のl1〜l3が結構長くて
外部モジュール使わない訳がない
素直に numpy なり pandas なり使え >>43
if i not in drop_indices
ここの計算量は無視していの? inのところリストかセットかの違いだけの問題に一票 >>43
リスト1つに纏めるのはどうよ
l=[(1,a,…),(2,b,…)..] 長いって言うんなら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) for i in reversed(drop_indices):
__l1.pop(i)
__l2.pop(i)
__l3.pop(i) dataarray=list(zip(l1,l2,l3))
new.append(dataarray[i]) pythonではじめてwebsocketなる通信をして感動しているのですが
クライアント側のjavascriptで
socket.onmessage = function(e) {socket.send("test msg");}を設定したところ、
websocketサーバー側のログが0.5秒?くらい置きに延々と流れてくるのですが
そういうものなのでしょうか?
そのまま放置していると(無料鯖のため?か)websocketサーバーが止まりました。 サーバにデータを送信したらデータを返却するよう実装したんじゃないの? なるほど
参考にしたサイトが”なでしこ”→"python"で実装されていて
よく見ていませんでしたが改めて見たところ
受信時→WSサーバ全返信
という行を発見しました。
今は制限中なので解けたらその行を消して試してみたいと思います
ありがとうございました Flask
頭の中でフラスコって読んでます?それともフラスク? >>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']
なーんか似たような問題が出回ってんな
同一人物か? >>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) s100のリストを作ることがG,C,Pの
出現場所を記録したリストを作ること
s100があるならやることはない >>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 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'''」のように引用符が一種類だと大丈夫でした
こんなファイル名でも引数に設定できる方法はないでしょうか? python&エスケープで検索
'\'\'s m\'p".txt\'\'' >>68
ありがとうございます
しかしエスケープしてもやはり同じように失敗します
(コマンドのヘルプが出る)
コマンド側が対応していないのかもしれないですね python学習にあたりおすすめの参考書はございますか?
現在はpython1年生という参考書が終わりそうです。 1回目に実行した内容を記憶しておいて2回目に実行した時は処理を変えたいんですけどなんか良い方法ありますか?
具体的には暗証番号入力するプログラム作ってるんですけど暗証番号の入力に失敗したらロックかけて次に同じプログラム実行したらロックかかってますみたいな表示を出すようなことがやりたいです 例えばプラグファイル作るでも良いんですけど消されちゃうのであんまり意味ないしジェネレータみたいな感じで1回目の処理を記憶してくれたら良いんですけど よい方法はないですね
問題の形式が変わっただけで、つまるところ「アプリケーションが保存したデータをユーザーに触られないようにしたい」でしかないので
素直にサーバーに認証回数を保存してください なんかメモリー上にアクセスキーを暗号化してキャッシュして保存するみたいのできないんですか? それじゃ通電中保持するだけでね?
裏で保持プログラム動かしとくのと変わらんのでは memcached (server だけどローカルPCで動作させても良い)
python-memcached
あるいはレジストリ等
どちらも勝手に消されないように対策すること >>78
そこまで来るとDBに情報保存した方が早い メモリだろうが何だろうがローカルに暗号化して保存ってのが既に馬鹿馬鹿しい
金庫の上に鍵状態だって分かってるのか? サーバーサイドなら既存のソリューション利用すりゃいいし
ユーザーサイドならもう違法アクセスされてる時点でパスワードどころの騒ぎじゃないし
何故作るのか見えてこない >メモリだろうが何だろうがローカルに暗号化して保存ってのが既に馬鹿馬鹿しい
ここだけ切り取ればどこでも普通に行っていることだが?問題はその鍵をどう守るかであって。 他人のプロセスを覗けるのは、そのPC・サーバーの管理者だけ
ただし、サーバーが中国にあれば、中国政府に覗かれる。
そういう法律があるから __name__変数について教えてください。
__name__はグローバル変数でモジュール名が格納されていると思います。
ですが、参照をクラス名.__name__とするとモジュール名ではなくクラス名が取得できました。
これはモジュール名が格納されているものとは別の__name__を参照していると思うのですが、どこにある変数を参照しているのでしょうか。
dir(クラス名)としてもそのクラスは__name__変数を持っていないようでした。 ありがとうございます。dirですべて確認できると思っていました。
ちなみにですが、関数について↓のような認識でした。
関数は__name__変数を持っていないが関数名.__name__でモジュール名が取得できる。
これはその上位であるグローバル変数の__name__を参照しているため。
これももしかしたら関数の持っている__name__を表示している可能性があるのでしょうか。 >>88
「クラス名.__name__」があるのであれば、
クラス内で__name__のようにして変数名だけで参照したときに、クラス名でなくモジュール名が返ってくるのは何故でしょうか…?
質問ばかりすみません、、訳が分からなくなってきました >>81
そうなるよね
最終的にはもうdbに保存してる毎回呼び出すで良いのではと思えて来た クラスはスコープを作らない。
パッケージグローバル変数を読んでるだけだ。
別に__name__固有の話ではない。 何かの自動化ツールでpasswordを含むプロジェクトがあるとして
githubにうっかりpasswordあげる事故を防止したい
passwordは入力が面倒なのでローカルに保存しておきたい
こんなとき正しいというか定石ってどんなのがある? 環境変数から入力することを徹底するのと
コミットをgit-secretsみたいなので未然に防ぐことかな
この辺はPythonとあまり関係ないけどね
(どの言語でも守られるべき) 年収調べたいので三井住友bankのソースコードをgitにあげたいんですけどどうしたらバレませんか?^ ^ try-except
って遅くないけど、if-elseのような感じで動いてるわけじゃないのですか? >>87ですがやっと理解できました。
__name__は単独で使ったときとオブジェクトに繋げて記述したときとで戻り値が違うのですね。
ありがとうございました。 flaskからpostgres操作するライブラリから使うなんちゃらがインストールできない。
後から追加するライブラリが多いとなんだかんだで環境構築の難易度が上がるのでフルスタックのdjangoとかローコードで良いと思った・・・ え?仮想環境入れてないの
マジで?馬鹿じゃないの? あるひとつのフォルダの中身が一定時間後に変わってないことを確認したいんだけど
中身全部ハッシュとって比較するしかないですか? ファイルのコンテンツ以外に信頼できる情報がないならそうするしかないんじゃない?
コンテンツの更新が必ずst_mtimeの更新を伴うとか、制約が増やせるなら検証範囲は絞れそうだけど >>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 OSによるけどフォルダの内容変わったら通知来るAPIがあるものもある > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw ルビー基地外クソわろ
全てルビーの機能だと思ってんだろうなw ドン・キホーテが世の中の全てを騎士道物語として捉えるようなモンだろ x = [1,5,3]
n = 4
のとき
[[1,2,3,4], [5,6,7,8], [3,4,5,6]]
が欲しい
どう書いたら簡潔ですか? x2 = [[j for j in range(i,i+n)] for i in x] >>110
x=[1,5,3]
n=4
y=[list(range(i, i + n)) for i in x] みんなあたまいいなあ
俺馬鹿だからそんなかっこいいコード思いつかないなあ
参考になるわ
[list(range(x[i], x[i]+n)) for i in range(n-1)] 問題集ていや先日
要素数(size)と折り返し(rep) の引数を取って
例えばsize=5, rep=2のとき
1_1
1_2
2_1
2_2
3_1
って右がrepするたびに左が増えるやつ欲しいって言われたんだけど
一瞬まったく意味わからんくて笑った。死ぬかと思った forの二重ループで回せばいいだけじゃないの普通に… size=10
rep=3
for i in range(size):
__l=(i//rep)+1
__r=(i%rep)+1
__print(l, r)
こうか
算数怖い これじゃダメなんけ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] 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) コードは長くなるけどgenとtake(=islice)を分けたほうがわかりやすいしメンテしやすい 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) pathlibのiterdir()でwindowsの$recyclebinやらsystem volume infomationやらといった
隠しフォルダをスキップする方法はありますか? >>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) 機械学習の数学各分野て分野は紹介されてるけど結局どこまで勉強すればいいのかわからん
例えば線形代数を対角化までやったけどLU分解とか初学者向けの本には乗ってないやつも勉強せんなんの? 行列計算のアルゴリズムまで自分で実装(特にpython)することは無いだろう
使い方だけ知ってればOKなパターン 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 このルビキチはシェルスクリプトスレにも書き込んでたガチの基地外なのです 無差別爆撃なので誤爆じゃない
Ruby信者のようで実質Rubyアンチな異常者によるテロ行為 ム板に来て本当にrubyが嫌いになったから、彼の試みは完全に成功している リアル職場ではコミュニケーション取れているのかが気になる >>119
f=: 4 : 0
>: ( x , y ) #: i. x
)
___5 f 2
1 1
1 2
2 1
2 2
3 1 機械学習のお勉強始めたは
中卒のおいらにはそもそも微分とかきいたことなさすぎてつらひ 中卒で機械学習て何ができるんや
フレームワーク使うのも指示された通りにしてるだけで何の値操作してるのか理解できなさそう >>146-147
中卒馬鹿にしやがって許さねえからな 今微分の勉強して傾きと切片っていうの理解したわ
馬鹿にしたやつ覚悟してろよ9m >>151
次は積分だな
その前にイプシロン-デルタかもしれんが def 雇用(people):
..if people >= 高卒:
....if people >= 実務経験: MIT も、Julia へ行ってる。
大学院数学科とかじゃないと採用されない
だから皆、文系はRuby on Rails へ行く。
英語さえ出来れば、文書を読めるから >>154
スレタイも読めないお前が何を言っているんだ
ギャグセンスは一流だな >>153
高卒以下のコード書くなよw
def 雇用(people):
..if people.academicHistory>= 高卒 and people.skill >= 実務経験:
…
だろ お前こそ中卒だろ。なんだよHistoryって。
TitleまたはDegreeだろ。 バカはこれだから…
title は肩書、degree は学位でお前みたいな高卒以下に関係ない属性なw 愚かなギャグのせいでRubyガイジの方が優れている一面を見せてしまった 今どきのPythonistはそういうのはまとめてAIにぶち込んでなんとなくいい感じに判断する お前らPythonicなコードを書けよPythonicなコードを 微分積分なんて概要を理解すればいいんだよ
別に包丁がなんで出来ていてどういう歴史があるかなんて知る必要はなくて俺らに必要なのは包丁で野菜を切るただそれだけなのだから まあわざわざ極限使って計算することはなくて形式微分か形暗記したものを手計算なら使うしpcなら数値計算だもんな
微積の傾きと面積の関係、物理単位なら乗数が増減することが分かってれば困ることはない 楕円の面積は簡単に求められるのに
外周の長さを求めようとすると結局積分が必要になる。
長いほうの直径が27、短いほうの直径が6の楕円の場合
外周の長さを.以下2桁まで求めるには実際にはどうやる? そーゆーのは高校生の甥っ子にでも出題してマウントってろ白痴 pipenv installで環境構築した後に行う
pipenv shellって何なんですか??
構築した環境以外にもcdできたりrmしたcpしたり
よく意味がわからないのですが。。。 virtual envをactivateした状態のshellを起動するコマンド
pipenv -hでhelp見て ラズパイ4でpythonを始めたブログラム初心者です。
python 1年生という書籍の例として入っている文、 PIL.ImageTkというモジュールで悩んでいます。 自分が使っている環境ではこのモジュールが入ってなく、前に進めません。
バージョン違いのものでも動く、これの代わりになるモジュールが ありましたら、 教えていただけませんか? >173
ありがとうございます
しかし試してみましたがインストール中にエラーになったっぽいです…
状況は変わらず… いや状況は変わってるだろ
エラーになったから諦めるんじゃなく、どういうエラーか確認して対処すればいいじゃん
だいたいのエラーはエラー文そのままでググれば解決法が出るし、
出ない場合はここにどんな環境で何がしたくて何をしてどうなったかとエラー全文貼れば教えてくれる人も居るでしょ .foo.xxx_var
.foo.foo.yyy_var
この二種類の形式の文字列があるとき
xxxとyyyを正規表現で抜くにはどう書いたらいいですか? >>180
ああ正規表現スレってあるんですね
失礼しました 正規表現て役に立つけど電話番号とかメアドみたいなよく使われるやつじゃないと他人が見たときわけ分かんないし自分も後で見たらわけ分かんなかったりするよな
よくスクレイピングするやつとか正規表現使う頻度にもよるんやろうけど 共感得てポンコツなのは自分だけでは無いと安心したいのかな?
余程複雑長大なものでも無ければ解釈に大して手間取らないと思うが >>182
電話番号やメアドこそ、正しく正規表現で表そうとするとわけがわからんくなるぞ >>191
パズルとしてならいいけど実務でやってるなら単なるバカ 「正しく正規表現で表そうとするとわけがわからんくなる」が伝わらんかったみたいだったからサンプル出したけど、まぁこのレベルの精度が必要なら正規表現じゃやらんわなw >>191
厳密に言えば「総務省公表のデータにマッチする正規表現」か。
そこに含まれていない範囲だって未割当の電話番号に違いないでしょ。 電話番号と同じパターンの別の番号が出てきたらどうすんだろ
気づかず置換して事故るんかな 正規表現でウダウダ言う奴ってこういうアスペ的なバカばっか >>194
ゆるいバリデーションなら、総務省のやつだろうね
アレは楽
リンクのやつは多分各事業者の情報も加味してある
このレベルで実装するなら、メンテが必要なんで、継続的な更新のあるライブラリが必須だね
個人的にはやりたくないw
他言語の資料だけど、これが面白かった
https://speakerdeck.com/memory1994/li-jie-siteokubeki-php-falsebaridesiyon?slide=78 今日は中卒の俺が単回帰分析覚えたぞ?
バカにしたやつ震えるがいいw >>199
お前がどんなに頑張って俺に追いつこうとしても、俺のいた場所にお前がついたときには俺はお前の少し前に進んでる
永遠に追いつけないんだ!
byゼノン >>200
こういう引用する方が中卒、いや中坊っぽい なんかたまに名言でドヤって来るやついるけどダサいよな
内容より誰が言うかやからな
あとゲームとか漫画の引用は中学生までや そういわれると「ゼノンのパラドックス」ってすごい厨二ネーミングに見えてきた。。。 どっちが上とか言い出したら「フェルマーの最終定理」 これは何歳までだとか自分がどう見られるかに拘ってる内はまだまだガキ 飛んでる矢を止めてるのは俺かDioか、それが問題だ
byゼノン
>>204
中卒、おもろいなw httpサーバー立てるときに
@route('/')
def index():
_pass
@route('hoge')
def hoge():
_ pass
という風に分けるのですが
index()ではimport sample1を
hoge()ではimport sample2をしたいとき、
一番上(defの外)にまとめてimport sample1,sample2とするのかそれとも
index(),hoge()の中それぞれでimportした方がいいのか
何か慣習はあるのでしょうか? httpサーバーであるという情報とかデコレーターが付いてるのとかが質問にどう関わるのかよく分からんが、sample1モジュールはindex関数だけから、sample2モジュールはhoge関数だけから使われるケースで何処でimportするか、ということなら、俺の場合
index()やhoge()が__name__ == '__main__'が真であるときにのみ呼ばれるならindexやhogeの中で、そうでないならソースの先頭でimportしてる
つまり、そのソースが単体で実行されるときにしか使わないモジュールは、モジュールとして他のコードにimportされるときにはimportしたくない、という貧乏根性 >>212
特別な理由がない限りは全て先頭でimportしたほうがいい
importは重い処理だしエラーを発生させやすいので、なるべく起動時に済ませてしまった方がアプリの挙動が安定する
毎回実行される訳ではないが、初回実行のタイミングの問題だ
Webアプリで特定のアクションが呼ばれたときにエラーで落ちるとか初回実行時だけやたら遅いとかデバッグするの嫌でしょ
逆に、必要になったときに初めて読み込むことで起動時間やメモリ消費を抑えるテクニックもあるが、役に立つのは分散処理フレームワークなど極めて特殊なケースだ そもそもめったに使わない(まったく使わない)機能のために
依存関係増やしたくないしな Ruby のrequire は、同じファイルを1回しか読み込まないので、簡単 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
なんか便利な関数とか、もっとシュッとしたやり方とかあると思うんですが
知らないので教えてください.あと再帰関数使いたかったけど挫折しました >>220
[re.sub(r'<([0-9]+)>', lambda m: f'{{:0{len(m[1])}}}'.format(int(m[1]) + i), string) for i in range(size)] 今日は重回帰分析勉強したわ
スカラーベクトル行列転置をやったけど逆行列って言うのがよくわからねえわ
そろそろ中卒の俺の頭もセグメンテーションエラーだわ
じゃあの >>224
誰もお前に興味ないから無駄な報告は要らんぞ >>225
お前俺に興味津々だな
また来るわじゃあの >>227
もちろんやったわ
スカラーベクトル行列は理解したわ はい出ましたw
きちんと理解してないから分からないとかいう奴www value: int みたいに型指定したほうがいいの? Python処理系は今のところdataclassのフィールド生成くらいにしかタイプヒントを利用しない
それ以外のタイプヒントは完全にタイプチェッカー向けで、タイプチェッカーを利用しないならつける意味はない 逆行列のどこが分からないのかな
AB=I
Iは単位行列
のときBはAの逆行列 逆元が分からんのだろ
行列やってる段階の奴が群知ってるとは思えないが >>234
いや単位行列は斜めに1があるやつで
逆行列は普通の行列に逆行列をかけると単位行列になるって言うのはわかるんだよ
ただその後これはスカラーですだのこれはベクトルですだの出てきて記号いっぱいになると途端に訳が分からなくなるのだよ分かる?
行列積があーだのこーだの >>235
偉そうなやつだなあ
友達いないだろお前? >>236
>分かる?
とか言われてもその気持ちは分からんなぁ
普通に行列やって普通に単位取れたってことは特に苦労しなかったんだから、
ワケが分からなくなることがなかった
記号が一杯でも初見で大丈夫だったからお前の気持ちは一切分からん >>236
とりあえずは普通の掛け算だと思って
(可換則は成り立たないけど)
大丈夫なんだが pythonってプログラミング言語の中では簡単な方って本当ですか?
最近勉強してるんですが難し過ぎるんですが [[1,2,3], [1,2,3], [1,2,3]]
がほしいとき
[[1,2,3]*3]じゃなくて[[1,2,3]]*3だけど
感覚的には前者なので違和感が強いです
なんかいい感じに納得させてもらえませんか >>244
言語としては簡単な方だよ
ただ言語の難しさとプログラミングの難しさって別だからね
言語の選択ってのは迷路の広い入り口を選ぶか狭い入り口を選ぶかであって、迷路を進み始めると後は同じなんだよ かんたん言ってる奴は先に別の言語をやってた可能性が高い
それに比べるとかんたんと言ってる >>246
なるほど
一つの言語を極めると他の言語を覚えるのは簡単と言うのが分かった気がします
pythonを極められるように頑張ります >>245
'aho'*3は
'ahoahoaho'になる
''や[]は*3に文字列やリストを渡す
役目があって*3の前に役目を終えている 合成関数のとことかシグモイド関数の微分とかお前らモヤらんのか?
中卒野俺にはわからんがめっちゃ頭いいな YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
初心者は、Ruby on Rails から始める
Python, PHP も勧めていない
バックエンドは、Ruby → Go という路線 ケンタはあわしろ氏の一番弟子。
実力は折り紙付き。 TIOBEのTOP10から転落した落ち目言語はポイーで 範囲内、重複なしのreq_indexでdb(リスト)からデータ取得する
selection = [db[idx] for idx in req]
こういうのの逆で、渡されたreqに含まれてないidxデータ取得するとき、一番スマートなのはどういう書き方? db[あ,い,う,え]
req[0,2]
get[い,え]
ていう場合 >>255
[[i, v] for i, v in enumrate(db) if i not in req]
おわり >>245
[3*3] -> [9]
[3]*3 -> [3, 3, 3]
[[3*3]] -> [[9]]
[[3]*3] -> [[3, 3, 3]]
[[3]]*3 -> [[3], [3], [3]] >>248
>一つの言語を極めると他の言語を覚えるのは簡単と言う
誰が言ったの? いやプログラムの根底は演算と型と制御だろ
そりゃベースが出来てれば大体何でも出来るわ >>255
db=[10,20,30,40]
req=[0,2]
a=list(set(db)-{db[i] for i in req}) プログラムの根底とプログラミングの根底は全く別物
その程度の区別が出来ないようなら大体何も出来ない proxyを通して接続するときに、そのproxyが生きているかどうかだけ確認したいのですが
実際に存在する適当なサイトに接続してステータスコード200を確認すればよいのでしょうか?
今は、
プロキシ経由OKの(なるべくレスポンスの速い)サイトでrequests.getして200返ってきたらproxy生存
みたいにしてるのですが
それ専用のチェックの仕方があるのかな、と気になりました >>265
確かに1行目と2行目の文章が繋がってないお前が言うと説得力あるなあ >>255
[db[i] for i in {i for i in range(len(db))}-set(req)] >一つの言語を極めると、他の言語を覚えるのは簡単
これ自体が嘘。
10年以上掛かるし、各言語の特殊性を学んでも、再利用できないから無駄
YouTube で有名な、雑食系エンジニア・KENTA は全く逆の事を言ってる
80 : 20 の法則。
簡単な80% の部分だけを学ぶべき
難しい20%の部分は、特殊だから再利用できない・使う頻度が少ない割に、
学ぶ時間が何倍も掛かるので、効率が悪い
専門学校で必ず言われること
例えば、法律の条文の暗記とか、
15題ずつ、重要度A・B・Cのランクがあったら、
AB だけ暗記して、C を捨てろとか
使う・出る確率が低いから、そこに暗記コストを掛けるのが無駄
ドラゴン桜で言う、京大英語・赤本で英語を学ぶなという格言。
特殊で、誰も使わないようなトリビア表現に、時間を掛けるな
数百人のネイティブがチェックしてる、英検をやれ >>269
その20:80割合逆だろ
簡単以前なことも学べてないじゃないか 推奨NGWord
Ruby
あわしろ氏
雑食系エンジニア そうして簡単な単純労働しかできない人が量産されるんですね >>270
横からだが逆じゃないと思うよ
もちろん全体の100をどう捉えるか次第だけど 簡単な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をやるからだって
つまり、ほぼ無意味なことを長時間やるから、しょーもない 重要なのは2割って話は知ってるけど
簡単なのは2割って知らんな 統失煽りで文化人を一人殺したので
名前が同じだけでもてはやされてたKENTAは用済み > だから、1年の未経験者が、10年以上のプロよりも技術力が上になる!
プロ舐めすぎやろ
自分のレベルすら正確に把握出来てないだけじゃん >>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がリストになっちゃうのは使いにくいでしょ >>281
ダニングクルーガー効果ってのがあってぇ… >>255
db=[10,20,30,40]
req=[0,2]
a=len(db)
for i in req: db.pop(i-a) Railsはすべて分かっている人にとっては楽
初心者は設定や、細かいチューニングで必ずつまずく pandasで特定の列(横)の重複した値を削除して一つだけにするのってどうするの
例えばA,B,C,B,C,DってあったらA,B,C,,,Dにしたい(BやCのみでも可) >>287
あえてPandas使ってとなるとむずいな BやCのみでも可なら
df.replace('B','').replace('C','')
それとは別にdf.duplicatedで空白にしたいインデックスがTrueになる
データフレームが得られる
データフレームにSQLほどの機能はないようだ dfの横はlist的に扱えるから一次元リストの重複要素を任意の値に置き換えるという操作をするだけでは? みんなのPythonで勉強しているのですがP340のwith文の説明がよくわかりません
私の理解では、with文でopen()した場合は、ファイルを最後まで読み切ったら自動的にclose()する処理になると思っています
この参考書には、openするファイルが存在しなかったらファイルを開かないで処理を終了する、ということが書いてあるのですが間違っていないでしょうか
openするファイルが存在しないと普通にエラーになるのですが modeによるとしか
readならその通り。writeはファイルが存在しなければ作成される。 Ruby では、存在しないファイルを読もうとしたら、エラーになる。No such file
print File.read 'abc.txt'
出力
No such file or directory @ rb_sysopen - abc.txt (Errno::ENOENT) 参考書の例文はモード指定しない既定なのでreadです
with文のreadモードで開いたファイルをfor文で一行ずつprintしています
説明によると、ファイルが存在していたら処理を行うという意味のコードになるとのことです >>293
>私の理解では、with文でopen()した場合は、ファイルを最後まで読み切ったら自動的にclose()する処理になると思っています
違うよ
>この参考書には、openするファイルが存在しなかったらファイルを開かないで処理を終了する、ということが書いてあるのですが間違っていないでしょうか
サンプルコードではFileNotFoundErrorをハンドリングしてるね
https://colab.research.google.com/github/shibats/minpy_samplecodes_4th/blob/master/Chapter10/10-01.ipynb def test():
__return random.randint(2,5)
obj=[test(), 0, 1]
l = random.choices(obj, k=3)
# -> [4,2,0]
testが毎回実行されて(lに違う数字で入って)ほしい
どう書けばいいの? >>293
withブロックを出るときにclose
open関数の中で
ファイル確認して
ファイルを開く
ファイル確認でエラー
開いてない
ないのに開けない def test():
__return random.randint(2,5)
def exectest():
__obj=[test(), 0, 1]
__l = random.choices(obj, k=3)
exectest() numpy.loadtxtでcsvファイルを読み込むんだが、csvファイルのデータが崩れていることがある。
で、何行目にエラーがあって取り込めなかったのかを知りたいんだが、いい方法ない?
データが崩れているというのは、例えば、
-1.234,123.45.789,
みたいに、ありえない数値表現が紛れているということなんだが
csvファイルが崩れないようにするのが本筋だけどそっちに頑張る気がないので
おかしな行を見つけたら手動でその行を削除して再度処理という感じで運用したい 通常はどういう数値が入るのか分からんとなんとも言えないな >>304
詳しく
>>305
通常は小数点付きの数値でマイナスの場合もある >>303
1pandasで文字列としてロード
2走査しつつ数値にパース
3失敗したらスキップ 例えば、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 が、変換に失敗して、文字列型のまま >>293です
よく分からなかったのは私の勘違いが原因でした
P340に記載されている内容はP338の差分だったことが分かりました
やっと理解できました
失礼いたしました、皆様ありがとうございました >>308
せめてnumpyを移植してから知った風な口を利け pep8に
単一の文字 'l' (小文字のエル)、'O' (大文字のオー)、'I'(大文字のアイ) を決して変数に使わないでください。
フォントによっては、これらの文字は数字の1や0と区別が付かない場合があります。
ってあるけど、上のような理屈であれば、単一の文字でなくても同じ理由で使うべきではないことになるんでは? 10ng と long と IONG を間違うかって話だな $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でやるのかもわかりません
それ専用の標準ライブラリとかあるのかな >>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())) >>314
なるほどprintでよかったんですね
splitlinesできました!ありがとうございました 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
何を見落としてるんでしょうか…? 何をしたいかが全く分からないがとにかく
そのエラーは/bin/shが
cat <_io.StringIO object at 0x7f1360de01f0>
とかいう文字列を実行しようとして
>が出力のリダイレクトと解釈してその後にファイル名がないからエラーになってる >>317
ありがとうございます!
例で実現したいことは、
$ python3 test2.py
12,34,56
この結果が出るにはどうしたら良いかが知りたいです。
シェルから見て実体のあるファイル名でないとダメってことですね。それはそうか。
一度ファイルシステムに書き出せば良いのでしょうが、それ以外の手はないでしょうか。
なお、例では長くなるのでcatコマンドに書き換えましたが、実際にやりたいことは
「pythonの前段処理結果をcsvに書き込み、そのcsvをgnuplotで読み込んで作図(を毎秒繰り返し)」というプログラムです。
処理結果の数字は毎秒積み上がっていくのと、プログラム終了時には実体のcsvファイルに書き出したいのとで
プログラム上では、StringIOを使ったcsvファイルとして処理したいです。 >>318
>「pythonの前段処理結果をcsvに書き込み、そのcsvをgnuplotで読み込んで作図(を毎秒繰り返し)」
だったら質問の意味が尚更分からん
上記の処理を1プログラムでやりたいなら
Pythonで前処理⇒直接前処理結果をグラフ作画⇒作画後に必要に合わせてデータをcsv出力
っていう流れの方が良くね?
書き込んでから読み込む必要性が全く分からん >Pythonで前処理⇒直接前処理結果をグラフ作画
前処理では複数行複数列の数字(時間と温度です)を積み上げていくので、
その前処理結果のgnuplotへの渡し方としてcsvが適当かな、と思ったためです。
それとも、そもそもpythonスクリプトとしては前処理のアウトプットだけでexitし、
gnuplotはOS側シェルで普通に動かして前処理結果を使えば?という意味だとすれば、
今回はpythonスクリプト内でgnuplotを動かしたいです。 データが来るたびにファイルに追記していく(writeのあとにflush)
gnuplotは別に起動して毎秒ファイルを読み直す
と分けるのがよさそうに見える >>320
>その前処理結果のgnuplotへの渡し方としてcsvが適当かな、と思ったためです
gunplotのマニュアル確認したけど、それなら素直にCSVファイルとして書き出さないと無理じゃないか?
大学か会社の都合か分からんけど
Pythonで素直に一連の動作をさせるなら
matplotlibの方がよっぽど楽だけど、それだとダメなんだよな もともとはシェルスクリプトでそんな感じでやっていて、
拾ってきたpythonで温度を測定し、結果を/tmp/temp.csvに書いてそれをgnuplotに読ませてました。
実はgnuplotが書いたグラフ(png)をまた(拾ってきた)pythonでOLEDに描画するという後処理もあって、
全工程で1秒ちょっとかかってました。
そこで、おっしゃ自前でpythonの1スクリプト化して高速化や!コピペマンから脱却するやでー!
という素人考えで今に至っています。
pythonの1スクリプトで、>>316に書いたtest1の方法(中間ファイル書く)でも
シェルスクリプト版の倍は速く動いてるので、あとはStringIOさえできれば…と思ってました。
何分素人なのでそもそもの考え方が間違ってるところもあるとは思いますが、
なぜそう思うに至ったか、という話でした。 >>322
やっぱ実体としてのcsvファイルがないとダメですかね…ありがとうございます。
matplotlibはグラフ描くがgnuplotより難しそうだから見なかったことにしてました。
いい機会だから、もう一度調べてチャレンジしてみます。 >>323
すげえ面倒な方法で見える化やってるなwwwwww
慣れたらmatplotlibも描くの簡単だぞ、Pandasとかnumpyとの相性も良いし
ただ根本的な所で言えば、既存の見える化フローが結構ヤバイな
(グラフ画像をOLEDで映し出すっていうのが衝撃だわ)
抜本的に改善したいなら
Pythonでデータ処理⇒データベースに書き込み⇒データ系の見える化ツール
っていうのが理想形だな
TableauとかPower BIみたいなツール使うと見やすくなる(有償だけど)
無償ツールなら英語だけどGrafanaとかかな? >>325
今回はラズパイローカルでグラフを物理画面に即描画したいんですよね。
趣味の焙煎釜の温度変化を熱電対で計測し、手元でリアルタイムにグラフ描画したい、
そして記録をcsvに残したい、というのが目的です。
今は単機能の熱電対プローブでやっていて、温度変化が全くわからないので。
そこでまずはアリエクで300円しないOLEDを買ってラズパイに繋いで
gnuplotのpngをSPI接続のoledに送り出し続けるという形にしました。
ほんとはpythonからoledのライブラリとか使って直接描画とかもできるのかもしれませんが、
matplotlibともどもフタをしてました…
これがうまくいったら、OLEDやめてラズパイケース一体液晶にしても良いかなとは思っています。
GrafanaやPowerBIは別件で使ったこともあって、後分析には良いですよね。 >>326
>今回はラズパイローカルでグラフを物理画面に即描画したいんですよね。
あーなるほど、そういう使い方もあるのか……俺の知識不足だったすまん
ただ結局グラフのpng画像を生成出来れば問題なさそうだし、matplotlibの差し替えが無難な気はするな int型の足し算ではintクラスの持っている__add__メソッドが暗黙的に呼び出されていると思います。
ですが、
1.__add__(2)
のようにすると1+2が実行されず構文エラーになります。これは何故でしょうか?
str型の場合は問題なく実行され、以下の場合"aabb"が返ってきます。
"aa".__add__("bb") 詳しくないが 1. が小数になるのが原因だろう
(1).__add__(2)
とか
1..__add__(2)
ならエラーにならない 1.x(float)か1のメソッドなのか決まらないから
1.1.__add__とかはメソッドなのが分かるから通る >>329
>>330
納得しました!
ありがとうございます 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を押すと進み、画像が更新されます。
そこが問題のポイントなのかなと思いますが、それ以上の手がかりがありません。 >>332
再現できる最小限のコードを提示しましょう > get_img_data(conv_image)
この計算は一回でいいんじゃ GUIがメッセージを処理する時間がねえんじゃねえの >>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)を入れてみたんですが、変化なしでした。 >>336
PySimpleGUIでメッセージ処理させるのはwindow.read()
メッセージ無くても回したいならtimeoutを指定する window.read()してないのでtk.update()が呼ばれず画面が更新されない
window.TKroot.update()を呼べば画面が更新されるが
直接呼ばずにwindow.read()を使ってメッセージループを作るほうがいい
デバッグセッション時はそれだと使いにくいから何か対処されてるっぽい ありがとうございます。なるほど…!
どこかでサンプルプログラムをコピペしつつ、ボタンはどうでもいいから
とりあえず画像表示ループだけ回そうと適当かつ中途半場に行を削除してしまったので、
その結果イベント処理が進まない状態ということですね。
すごく良くわかりました。
どう処理するかよく考えて書き直してみます。 ユニークな長いリスト src があって
おのれはユニークだけどsrcと重複しうるリスト reqがある
reqの要素がひとつでもsrcにあれば云々したい
速いのを探しています。外部ライブラリは使えない
test = set(req)
bool([i for i in req if i in test])
? any()かfor-loopのearly breakを使う
srcは長くて固定的、reqは短くて毎回変わるなら
srcのほうをsetにして管理したほうがいい いや冷静に考えたら
フツーにset(src)&set(req)か 共通要素を全て調べ上げる必要が無いなら>>341の方が速いな >>340
速いかどうかは知らん
not set(src).isdisjoin(set(req)) >>341
set(src10万)
req300 重複0〜5
ではany()と&はほぼ誤差
bool([i in set])がわずかに遅い感じでした
センキュー 違和感というのは[]を()のように捉えてるから
リストや文字列に対する*は数学の掛け算とは無関係
要素数を増やせという機能
> [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つに増やせ サブクラスからスーパークラスのメソッドを呼び出す場合、次の@と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) わざわざsuper というキーワードが用意されているのだから使わない理由ないだろ
クラス名を変更した際の影響範囲を考えてみよう >>350
その例だと同じだけど複数から継承するようなクラスを使う場合は
super()が返すものが普通に想像するものとは違ってくるケースもあるので注意が必要
https://fuhm.net/super-harmful/ >>347
数学と無関係ではないよ、加群としてとらえても矛盾のない演算になってるでしょ それは*3が同じものを3つ足し合わせなさいという
常識的な意味合いをわかりやすさのために利用してるだけで
数学的なことなら割り算もあるでしょ 常識的な意味合いかぁ・・・
演算子オーバーロードの悪い見本にしか見えない >>351
>>352
ありがとうございました
ある本に説明もなく両方の記載があったので悩んでました
この機会に多重継承も勉強しようと思います 数学っぽくやるなら
[3]*3->[9]
[1, 2]*3->[3, 6]
のほうがより直感的だった気はする pythonバージョン3.8.1で次のようなことをしようとしていますが、関数の配置に困っています。
次にするイベントを抽選する
↓
イベントを実行する
↓
イベント終了後にイベント抽選へ戻る
しかし、これだとイベントを抽選する関数をイベントの関数より上に置くとイベント抽選の関数がイベントの関数を認識してくれず、
下に置くと、各イベントの関数がイベント抽選の関数を認識してくれません。
なんとか動かす方法はないものでしょうか? 5chのこの板のAndroid版のスレタイトル一覧を取得したいのですが、スレタイトル部分だけ抜けてしまいます。
htmlを見ると、スレタイトル部分はjava scriptを呼び出して(?)表示しているようです。
このような別から呼び出す仕組みの検索語だけでも知りたいです。
実行環境はWindows10のcolabです。
何卒よろしくお願いします。
以下がソースとhtml抜粋です。
https://pastebin.com/dq4FFsM3 相互参照は常に避けるよう心がけるべき。
回避する方法はいろいろあるけど、
イベント抽選関数はイベントの関数に引数として渡してあげるとか、
イベントの関数はすべて同じ引数、戻り値にしておいて、イベント抽選システムへ予め登録しておく方式にするとか 知らんけどmain関数のなかにwhile True: 抽選関数()
みたいにしてループさせて抽選されたイベント自体は抽選関数を呼ばなければいいだけじゃないの ttps://mevius.5ch.net/tech/subject.txt
> スレタイトル一覧を取得したい
> このような別から呼び出す仕組みの検索語だけでも知りたい
どっち?
スレタイ取得ならsubject.txt読ませればいいじゃん
わざわざしかもitestのhtmlをスクレイピングする理由あるの? >>354-355
*3がどう展開されるかより
もっと深刻な問題は
[[?]]*Nの内側の[?]はコピーされていないということだろ >>359
イベントの関数定義と、抽選・実行をする処理とはファイルを分けて
前者を後者のファイルでimportして使う
1ファイルでできなくもないけど
モジュール分割を早めに覚えておいたほうが散らかりにくい >>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 を実行 5ch は最初に、空のHTML を送ってきてから、
その後、JavaScript(Ajax)で通信して、内容を取り込む
だから単に、Ruby のNokogiri などでスクレイピングをしても、
空のHTML が取れるだけで、まだ内容が読み込まれていない
だから、15秒ぐらいスリープして、内容が読み込まれるまで待つ必要がある
または、selenium-webdriver で、ブラウザを自動操作して、
driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout
みたいに、要素が存在しない場合に、何秒待つか指定する ご回答ありがとうございました。
私があまりに初心者過ぎて、せっかくの具体的なご回答をほぼ理解できませんでしたが、
この状態を相互参照と呼ぶことが分かってようやくググることができ、
>>362さんのレスから着想を得て、main関数を作ってプログラムを全部括れば動くということが判明しました。
以上ご報告と御礼申し上げます。 >>368
ありがとうございます。
Ajaxという技術なのですね。
webdriverでwaitを入れたところ取得できました。
>>363
すいません説明不足でした。
実はPC版はシンプルなため取得できていました。
勉強のためにAndroid版も見てみようと思いやってみたところ、取得できなかったためお聞きしました。
皆様、勉強になりました。
ありがとうございました。 >>354
そのツッコミをするなら、群と体の違いについて理解しようか。
掛け算があっても、割り算が必ずしも定義できるとは限らない。 スクレイピングでrequestsで上手く取得できないサイトはSeleniumで取得するようにしてるんだけどこれにThreadPoolExecutorを使用するとしたらどういう書き方すればいいの
今までは複数のサイトのURLが入ったリストをfor文で回しつつif文でドメインが一致するかどうかでrequestsとSeleniumを使い分けていたけど非同期にするとなるとさっぱりわからん クラスのメンバをforループのように回す方法はないですか?イメージは、
class Test:
a=0
b=0
c=0
def _print(self):
for member in self:
print(member)
みたいなことをやりたいです。 __iter__か__getitem__を定義すればいけるはず 試してないけど、
for v in vars(self):
print(getatter(self, v)) そういうクラスのためのdataclass
astuple, asdictでイテレートもできる。
自分で用意できないクラスのオブジェクトの時は、dir()で列挙した後にごにょごにょしていく必要があるけど。 この度pyinstallerでどのshell環境でも動作するコマンドを作成しました。
しかし5年前くらいのIntelMacでさえ快適に動作しますが、
M1macbookではかなりもっさりして遅いのです。
これはarm64アーキテクチャのせいで遅い可能性はありますか??
またこういったケースでの改善策などありますか??
arm64用にコンパイル方法などありましたら教えてください。
コマンドはスクレイピングした結果を別ファイルに落とす
シンプルなコマンドです。
shellscriptだとちょい面倒だったのでpythonで書きました。 ありがとうございますが、
>>377だと順番が毎回ランダムになる
>>378だと順番がアルファベット順になる?(多分)
csvの要素と対応付けたいので定義順に出てくれないと困ってしまうのです・・
>>379はバージョン不足で不可。(3.5系)
1番目が順不定になるのも多分dictの順番が保持されてないせいだと思いますしやっぱり素直にアプデですかねぇ。。。こんな仕様にしたのほんとに誰ですか >>374
AWS なら、Lambda, SQS などを使えば? >>381
for v in sorted(vars(self))でどう? 定義順に出てくれないと困ってしまう
source を parse 汁 定義順に出てくれないと困ってしまう
source を parse 汁 seleniumって、3つくらいタブを開いて作業して、そのままwindowsを休止状態にして翌日立ち上げ直すと、開いていたタブを忘れるよね。
no such window とかエラー吐く スリープ時にsession ID無効にしてるんじゃ
仕様でそうであっても不思議ではない 質問です。
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との違いが気になりまして。 インタプリタを起動して...だけ入力してEnterしてみれば分かるよ
答え言っちゃうと...はEllipsisオブジェクトを作る省略記法だな
ただし引用されてるコードはEllipsisオブジェクトを作ることを意図してる訳ではなく
単に「ここには任意の実装がありますが、説明したいことの本質とは無関係なので省略しますよ」という意味で書かれているだろう
プログラムの話というよりは国語の話だ >389
ちょっとEllipsisでしらべてみましたが、オブジェクトを返すんですね。
理解しました、ありがとうございました。 お聞きしたいことがあります。変数の定義に1以上□以下。とやりたいのですが、□にまた別の変数を入れたいのです。この場合どうすればいいのでしょう。別の変数はちゃんと整数で定義してあります。
そして、その定義内の全部の数字を一つずつ代入して計算する。というのもやりたいです。立式はもちろんできるんですけど、プログラムに反映させるのがどうにも難しくて。調べてもよくわからないのです。恐らく調べ方が悪いだけなのかもしれませんが。。よろしくお願いします。 >>391
foo = range(1, x + 1) >>392>>393
申し訳ないです。numpyは入れましたが分かりませぬ。そして393さんの式が何を意味してるのかも分かりません。
当方中学生なもので。プログラミングの知識が皆無と言って良いほどなんです。すみません >>394
中学生が5chのプログラム板に流れ着くっていうのも凄いな
簡単なサンプルコードをとりあえず出しておくけど
入門書とかまだやってないなら、一旦そっちやった方が良いかもな
(質問の内容ぐらいだったら、ライブラリとかは不要で基本を組み合わせるだけで出来る)
https://ideone.com/q7v4da s=15
list1=range(1,s+1)
map(f,list1) >>391
>>394
import numpy as np
s = 15
list1 = np.linspace(1, s, s)
print(np.power(2, list1).astype(np.int)) 命名規則スレに書くか迷ったんだけどとりあえずこっちで…
tkinterでラベルとかボタン複数作るとき
各々text埋め込むんじゃなくて、名前テーブル参照するようにしたい
このときたとえば
self.x_btn = tk.Button(root, text=self.db.name[0])
てすると、これインデックスがマジックナンバー化すると思うんだけど
通常どのような呼び出し設計にするのですか?
self.db.name["ウィジェット名"]とか? 通常はリテラルで直接textに代入して
数が多かったらwidth等と合わせてリスト化して
for i inで回すかな テーブルにする必要があるのか?
直でいい気もするけど、それが嫌ならどこかに
BUTTON_NAME_XXX = "XXXのボタン名"
・・・
とか羅列していってそこ参照して終わり
テキスト以外にフォントや背景色とか配置情報まで全部まとめてdbのように管理して自動配置したいってなら分からなくもないけど
テキストだけならいらない、やってる感出るだけで意味があまりない あー定数のようなものにして
テーブル相当の場所に列挙しとく感じですね
なるほど requestsでtry:except:で特に問題なく使ってたけど
なぜかプログラムが止まることがあってどこでループでもしてるのかと探してたらrequestsのタイムアウトが原因だった
今までのサイトでtimeout設定なしで止まったことなかったので新たな発見だった Scrapyくわしい人おるか?
Spiderにインスタンス変数持たせたいんだけど
__Init__をオーバライドしてやるしかないの?
スパイだのobjectが変数持ってくれたら何でもいいんだけど __init__が要件を満たさない理由を書けよ
それが明らかでないと、別の方法を提案しても同じ理由で要件を満たさないかもしれないし
そうなると二度手間だろ >>406
単純にSuperするのがマンドクセからです
重厚なフレームワーク使ってるんだからなんか他の方法あるかなーと思いました。
Response.meta に入れたら次のResponse にも引き継げる? pythonしか知らないんですが
普通のアプリケーションってリリース後にパッチ当てれますよね
pythonをpyinstallerしたやつを公開したあと
パッチリリースってできるんですか?
検索ワードすら思いつかない(モンキーパッチばかりヒットする)ので、ヒントだけでもください 失礼
普通のアプリケーション ☓
普通の(Cとかの)言語のアプリケーション ○ 可能かどうかで言えば可能だがやる価値があるかは分からんな
パッチプログラムにバイナリ差分を持たせてパッチしたいファイルに書き込めばよかろうさ pythonって案件ないのにどうして人気なの?
稼げない言語を極めても意味ないと思うんだけど >>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" # サイトを開く つーか普通に新版exeで置換すればいいだけでは?
パッチってあらゆるリソースケチりまくってた過去の時代の遺物って印象
現代でもメリットあるんか? >>414
Pythonはログ解析とかデータ生成とかちょっとした作業に便利だから愛用してた
ウォーターフォール型の大型案件ばかりで開発マシンも自由にできないような職場が好きなら
勉強しても無意味かもしれない Pythonの言語指定の案件があるわけじゃなくて、
データ分析とかPOCとかの言語はなんでもいい案件ではPythonが使われることが多いというだけだね
ある言語、資格、ドメイン知識さえあればとりあえず食っていけるだろうという算段でプログラマーになる人には向いてないかもね YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、Ruby on Rails のみ。
時給1万円のキャリアパスも、Rails → Go だけ
PHP は低時給。
Python も、Django も使われていないし、採用に無関係
Python・Julia は、MIT みたいな大学院数学科みたいな学歴で採用されるから、
プログラミング能力は無関係。
一方、ハーバードみたいな英語ができる文系は、Rails 一択
たぶん、KENTAが、PHP・Python を教えないのは転職できないから。
プログラミングを教えても、それで採用されない。
数学・統計・行列・微積分など、大学院数学科の内容だから、プログラマーじゃない
それで、転職できない文系がサロンに居座ると、サロンが崩壊するから、Railsのみ。
そもそも、KENTAは文系だし、数学を教えられないし YouTube で有名な、たにぐちまことも言ってる
Python の動画も作りたいけど、
内容が数学だから、数学の勉強しないと作れないって > 数学・統計・行列・微積分など、大学院数学科の内容だから、プログラマーじゃない
工学部の1,2年の内容なんですが マジで草
どんだけPythonにコンプレックスあったらこうなっちゃうんだよw Rubyガイジはこの板全域にいるからPythonコンプってわけでもなかろう
bashスレとかにもいる >数学・統計・行列・微積分など、大学院数学科の内容だから
この発言はだいぶやばい 自分の名前さえろくにかけないヤツが行く大学inの予感 >>426
工業高校だと1年で習う
つまり15歳なら理解できる >>435
工業高校1年だと旋盤とNCとラグビー
だと思っていた
BGM はボニー・タイラーのヒーローで windows10でtkinterを使ってclipboard.append()したやつが
tkinter上で手動コピペしないと外部に持ち出せない(空になる)やつ
なにかうまい解決法ありませんか? できればpyperclipとかの外部ライブラリなしで… rubyガイジは中卒だから高校の学習範囲を知らなくても仕方ない >>436
花園目指す系は東大阪かな
あの辺は北河内あたりの中学ラグビー強いから高校が強いだけであって
高校の手柄だっていうのはちょっと違う気がするよ
公立中学でも元全日本の選手が教えてたり、私立は中高一貫でラグビー部を育ててるチート状態だからね
NC旋盤は機械科だろうね
NC旋盤ってやる内容はほぼプログラマなのにあまりプログラマの選択肢だと思われてないね
工業高校って情報系や電気電子系はひたすら数学、法律、プロジェクト管理、あとは専門分野の実習だよ
英語や一般科目をほとんどやらないのと専門分野の科目数が少ない以外は大学とほとんど内容一緒
難易度に関しては全く一緒だよ
もちろん学校によって差はあるんだろうけどね pandasで行の範囲で重複要素を一つだけ残して削除するのってどうしたらいいの
具体的には以下のようにしたい
0, A, B, A
1, A
↓
0, A, B
1, A >>443
各行の列数が違うデータは扱えないので
削除じゃなくNAとかの別の値に置き換える 答えてくれた人が居るんだから何が原因でどう解決したかくらい書いてから逝ってほしい >>422
>データ分析とかPOCとかの言語はなんでもいい案件
こういうのは場末の新規極小案件しかないやろ
一括受託100万くらいの >>442
>NC旋盤ってやる内容はほぼプログラマなのに
プログラムっちゃープログラムだが、あの程度ができるからといって
プログラマを名乗るのも恥ずかしいからなぁ タプルを辞書のキーにするとメモリを食いますか?
アンダーバーでタプルの要素を連結して1次元の文字列にした方がマシですか? >>450
とりあえず試すといいよ
IPythonやJupyterで%memitや%mprunすればすぐ分かるので タプルをキーにする
内部ではタプルをそのまま文字列に変換しているだけなのでは? ID変わったので改めてご報告します。
メモリを確認しましたがタプルでも文字列でもかわりませんでした。 >>448
そりゃ市場に出回ってるのはそういうのだろうけどね、一旦上流と繋がっちゃえば関係ないね
手段はなんでもいいから問題が解決できる人材が求められているので プログラム内で安易にprint出力すると
シェルで実行して標準出力で受け取りたい場合に
関係ないprint出力まででてきてしまうのですが
そういうときはファイル出力すればいいのでしょうか?
それとも標準出力専用のprint的なのがあるのでしょうか 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()); exec(“from socket … \nwith … as s:\n\ts.connect….”) >>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 >>460
connectやsendallでエラーが出てもcloseが呼ばれるようにtry~finallyで括れば同じ >>461
ありがとうございます!
なぜかwithが使えない環境だったみたいなのでこっちで試してみようと思います 超超超初心者です
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にしたらいいのかなぁ・・
何が悪いのかがまるで分かりません
どうか皆様のお知恵をお貸し下さい、よろしくおねがい致します。 こういうのはYoutube側の仕様変更で壊れて、なんとか直しての繰り返しだよ
バグ報告があるみたいだよhttps://github.com/pytube/pytube/issues/1060 「http 404 エラー」で検索!
HTTP Error 404 は、そのURL が存在しない 先生pythubeはゴミだからyoutube-dlを使いなさいと1000万回言いました! スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか? スクレイピングをしかける側なのに、セキュリティ対策ってどういうこと? 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で提示されていた方法以外でも何かありましたらご教示ください。 超超初心者です
464さん 465さん 466さん
教えてくださってありがとうございました。
色々難しいんですねぇ・・
youtube-dlっていうの調べてみて
使えたらいいなって思います。
皆様ありがとうございました! >>467
取ってきたデータの検証方法を学んでください
うちのサイトだと、初心者丸出しのクロールにはプロバイダ経由の警告、本格的なのは嘘のデータを返してるんですけど、後者はなかなか気がついてもらえない。
半年以上、同じやつからと思われるアクセスが続くとホント嫌になる。 >>470
falseをtrueに変えて、全列挙してみては? >>471
あなたは多分、 qiitaにある「youtube-dlでダウンロードソフト作ってみた」を
ダウンロードして使うだけで満たされるのではないか >>473
できました!ありがとうございます!
コールバック関数がまだうまく理解できないのですが、これを元にやりたい操作をできるよう改修してみます。
ありがとうございました! 数日前からPythonを学習し始めたけど、このプログラムってベーシック語言みたいだね 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) >>483
>____names.append(f'"{name}",') # to csv
カンマを付け足す意味がよくわからないけど
とりあえずリストを生成する処理とリストをCSVにする処理は分けたほうがいいと思う
あと今のコードだと
['Foo', 'Bar', 'Baz', 'Qux’]みたいなリストじゃなくて
[['"Foo",', '"Bar",'], [], [], ['"Baz",', '"Qux”,’]]みたいなリストになるけど
これが本当に欲しい形? >>484
なるほど
リストのリストなのは問題ないです
treeはフォルダ−ファイル群の一覧になってて
親リストがカラム、子リストがフォルダ、値がファイルの予定です
カンマは他のカラムを処理したのと連結する用だったんですがCSV変換する関数作ってそっちでやりますね なんか長すぎるのはよくないと聞いたんですが
(個人的には)折っても逆に見づらいし、丁寧に書いても冗長だし と思って聞いてみました 先日に書き込みした超超初心者です
教えてくださったyoutube-dlが無事に使えるようになりました。
ffmpegが難しいですけれど色々と試してみたいと思います。
また何かありましたら、よろしくおねがい致します。 ごめん、この選択ソートのプログラムで
出力 1 2 3 になる理由を行ごとに分かりやすく解説してくれると助かりまっす
https://i.imgur.com/d5ppkHW.jpg
先頭の2を隣の3と比較して段々小さいのを前に持ってくのはわかるけど、プログラム構成を理解し損ねてて困ってる >>490
1行目:配列の要素の区切り文字がコンマじゃなくピリオドになってる
2行目:小文字のrがデカい
3行目:小文字のmがデカい
4行目:小文字のrがデカい
8行目:角括弧の角度が45°になってる
9行目:角括弧が山括弧みたいになってる
10行目:小文字のrがデカすぎる >>490
ざっくりと説明するなら
@リストの中から最小の値を探して先頭に移動させる
[3.1,2])なら[1,3,2]になる
A@で最小値は決まったから、それ以外の所で最小値を探して、
また位置を移動させる
(ようは残った3,2で小さい方を選んで、1は動かさないように2を先頭の方に持ってくる)
で、こういうアルゴリズムの奴は実際の動き見ない
絶対に理解できないから、
大人しくアルゴリズム図鑑のアプリ(370円)を買うか
その金も無いなら図解が乗ってる解説を探せ
https://www.codereading.com/algo_and_ds/algo/selection_sort.html >>490
youtubeで「selection sort」で検索
アニメーションで解説してくれてる動画がたくさんあるからそれを見るといい
プログラムの動きで理解したければ最初はprint debugで
for i in range(len(a)-1):
__print(i, a) # <― print結果を見れば各イテレーションで配列aのどの値とどの値がswapされてるかわかる
__mini = i
… 配列を入れ換えて1 2 3 になる仕組みを聞いてるのだが
「検索しろ」とか最低な答えをありがとう、あんたらに聞いた俺が間違ってたわ >>495
その通り!
ここにはバカしかいない
rubyスレなら懇切丁寧に教えてもらえるYO! Debian strechのpython 3.5.3で
from signal import *
print(sigwait([SIGINT, SIGTERM]))
という2行のスクリプトを走らせました
フォアグラウンドで走らせてCntl-Cを押す あるいは バックグランドに回してkill -INTする などでは、送ったシグナルの番号が表示されます
が、kill -TERMではシグナル番号は出てこず「Terminated」とだけ表示されます
SIGINTとSIGTERMで、どうしてこのような違いが出るのでしょう? sigwaitを使う前にpthread_sigmaskでブロックしないといけない >>498
早速ありがとうございます
教えていただいたとおり、sigwait()の前に
pthread_sigmask(SIG_BLOCK, [SIGTERM])
を入れたら、期待通りの動作となりました。SIGINTとSIGTERMの違いについてはまたこれから調べようと思いますが
とりあえずやりたいこと自体は無事に達成できました。ありがとうございます >>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モジュールのドキュメントの最初の段落に書いてありますね
まずちゃんとドキュメントを読めよ >俺 >>495
そりゃ仕組みもクソも何も
コード実際に書いてデバッグ実行すりゃ、どういう風に動いてるかは分かるし
それが最終的にどういう結果を目標に動いてるかを調べるもんだろ
ぶっちゃけプログラミング勉強したいなら紙ノートなんてナンセンスも良い所だぞ
実際に書いて動かして動きをちゃんと追わなきゃ絶対に理解できん a[0]に最小を代入して
a[1]に2番めに小さい値を代入
単純な仕組み >>490
>先頭の2を隣の3と比較して段々小さいのを前に持ってくのはわかるけど...
その考え方で画像のコードを見ても理解できないと思います。
隣の値と比較して段々と前に持っていくアルゴリズムはバブルソートでは?
まずは、要素の値を交換する方法と最小値(または最大値)を探索する方法を
勉強してください。※そもそもこれがわかってないのでは?
あと、要素の値と位置の違いを理解できてますか?
i,j,miniは要素の値?それとも要素のの位置?
tmpは要素の値?それとも要素のの位置?
この辺りがわかれば、選択ソートが理解できるはずです。 >>495
紙なら紙で1行毎に各変数がどうなってるか書いてみろっつうの >>502
君が馬鹿だということは判ったからもう黙ってて 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()って役に立たなかったりします? >>495
コードを打ち込んで1ステップずつ動作確認すれば理解も深まるよ >>506
あなたはその程度のコードも目で追って解釈できないほど頭が悪いのに、なんで実際にコード打ち込んで一行ずつ確認しないの? >>507
切片なしの単回帰モデルに乗らないようなデータなら、決定係数がマイナスってことはあるのでは? Python2.x系の標準機能で利用できる圧縮・解凍のアルゴリズム/ライブラリってどんなものがありますか? >>511
追記で、圧縮・解凍は、gzipやlzmaなどのバイト列を圧縮・解凍するもののことを示しています >>513
ありがとうございます。
zlibってのを使うのが楽そうですね 昔、COBOLにはコーディング用紙があってだね。。 ナイコン時代はノートに書いてMSX持ってる友達の家に行ったなぁ >>514
Ruby にも、gzip 用のzlib 拡張ライブラリがある プログラム用紙はfortranやbasic用もあったなぁ 紙でコーディングする有用性のわからないやつは素人
昔々のコーディング用紙に書いてたのとは目的が違う
ペーパーコーディングはホワイトボードコーディングの一人プレイ 会議中メモを取る振りをしつつ紙にコーディングする事はあるな それアメリカの面接手法でしょ
紙がもったいないから老害は早く氏んで いつまで紙とか言ってんだよ
そんなこと言ってるからにっぽんのITはまじ低レベルってバカにされるんだよ
プログラムの前に頭使えって sqlalchemy使ってるんだけど、
flask使ってないバックエンドのみで完結する方のスクリプト
と
webアプリ側のスクリプト
それぞれsqlalchemyとflask_sqlalchemy分けて使ってると
コーディングも微妙に変わってきて書き直すの面倒なんだけど
そういうものなのでしょうか? > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
強姦と窃盗はできるんだね!
すごいぞ朝鮮ゴキブリBot君!
クソチョンw お前さあ、ガイジを見かけるたびに近くにいる人に
「この可哀想な子は何なの?」って聞いてるの? >>1
に書いてる、荒らし
>「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。
荒らしは、完全スルー放置が一番きらいです
あちこちのスレの1を改変して、勝手に書いてる荒らし。
確か、工学部というコテハン。
プログラマーじゃない。ソースコードを見た事ない
あちこちのスレの1を勝手に改変して、荒らしている。
こういう勝手に追加したものは、削除した方が良い 荒らしは、他のスレのテンプレも、勝手に改変して、新しく立てたりする
漏れらは、そういうスレを削除して、立て直したりしてた。
次スレからは、1のテンプレを元に戻した方がよい >>533
お前自信も>>1に書かれてる荒しだろ
頻度が高い分、お前の方が迷惑な存在だから消えろ ああ、こいつRubyガイジか
しれっと自分を欠陥生物から除外するなよ 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
みたいな 訂正 from calcAB import sumAB,mulAB
from calc import sumAB,mulAB
>>538 プログラム初心者ですが、みんなのpythonを一通りやりました
2冊目におすすめの本などあれば教えてください 1冊分やったならそろそろ実演経験積めとしか
何やりたいんだよ
例えば機械学習やりたいとか簡易サーバー立てたいとか何かあるでしょ? 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. PySmellって悪気はないんだろうがなんか下品な名前だな 知らんけど2のpip呼ばれてるのでは?
3のpipの実行パスコマンドラインに直打ちすればいーんでね(鼻ほじ) Ruby なら、print( a ) を、print a と書けるけど、
Python は知らない
print post_install_message
^
SyntaxError: Missing parentheses in call to 'print'.
Did you mean print(post_install_message)? >>538
__init__.pyを書けば import方法は変更できる >>542
Pysmellについて軽くググったけど、これ13年前のライブラリか
単純にPython3に対応してないんじゃねこれ 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) それってreturn [111, 222, *t]と同じじゃん
何がしたいかわからない もしr=hoge()で受け取った場合、rに配列が入りますが、
return x,yだった場合は、タプルで返されますよね
なのでreturn (x,y,*items)みたいに
タプルで返した方がいいのかな?と思いまして >>549 >>550
本来の用途は、tを再帰して使う
ってことです、しかしそこは冗長なので省略して
何がしたいのかわからないようなhogeという関数名にしています たまに現れるガチアスペ的な人はネタなのかなんなのか どんな計算をするかわからないけど
もし一つのリストにappend/popしていくやり方ができるならそれが効率的だよね
そうでないなら好きにすればとしか言えない
mutableである必要がないならタプルのほうがいいかも >>554
なるほどありがとうございます
(受け取った先の)格納された変数をそのまま扱うことが目的なのでとりあえずタプルにしておこうかと思います >>541
機械学習、スクレイピングに興味あります
あとは実践あるのみですね、頑張ります スクレイピングは逮捕される危険があるって聞いたんだけどマジ? マジだよ
世の世知辛さを悲観して自殺することを薦める スクレイピングでは、そのサイトのrobots.txt を遵守する必要がある
初心者がスクレイピングすると、プログラムのバグで無限ループしたりして、
そのサイトを落としてしまう事があるので、超危険!
だから、必ずテスト中は、ローカルPC に対して行うこと!
絶対に、本番サーバーに対して、テストしてはいけない
Udemy の山浦清透、2021/6 の動画を参照。
マイナビ転職をスクレイピングしてる
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI requestsだと<br>タグはそのままなんだけど
Beautifulsoupに読み込ませると<br/>タグに置き換えられてしまう
html.parserもlxmlも同じ。<br>のままsoupにする方法ないんかな じゃあrobots.txtを遵守していればスクレイピングしてもOKなんですね? 逆にスクレイピングしてほしいんだよ
Google botがクロールできなくてGoogleで検索できなかったら困るだろ?
個人にスクレイピングされても不利益しかないが な
robots.txt守っててもあんまりアクセスしすぎても相手に負荷与えちゃうから一回のアクセスにつきどのぐらい待てばいいか考えて常識の範囲内でお楽しみください
「岡崎市立中央図書館事件」のことも調べてみ flaskのテンプレートで
{{ ここでコード実行できるけど }}
{{ hensu=dict.x }}
{{ hensu }}
みたいに変数に格納ってできないのかな
dict.xをあれこれ加工した値を使いたい時
毎回dict.xを加工しなくちゃいけないのだろうか?
もちろんdict.xが単一であればテンプレートの外で加工したものを渡せばいいだけなんだけど レスした直後に改めてぐぐったら
{% set hensu=value %}
でいけた
お騒がせしました 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]]
にする方法を教えて下さい。 l1.append([0 for i in range(7)]) f = open('listfile.txt', 'r')
line = f.readline()
while line:
print(line.strip())
line = f.readline()
f.close()
↑上記のようなコードで、数千文字×数万行のテキストファイルを読み込んだ場合
メモリ効率というのはどうなるんでしょうか?
line変数に全ての行が格納されているとしたら、そこが全部メモリを占有してしまったりするのでしょうか?
それとも、Pythonの場合はそこらへんのメモリ処理をイイ感じに処理してくれるのでしょうか? readline()で一行ずつ読むから使用するメモリは最大で一行分ですよ 今までVBAしか経験なかったんだけどpythonてVBAより簡単までありますね
今まで頑張ってCSV編集してたのが馬鹿みたい windowsです
指定したフォルダ内にいくつフォルダがあるか調べたい
len(p for p in src.iterdir() if p.is_dir())
だと、max_path越えてるpをFalse判定します
なにかいい手段はないでしょうか a = [(lambda x: x * i) for i in (1, 2)]
>>> a[1](1)
2
>>> a[0](1)
2
これがxがundefinedにならない理由はなんですか?またx:の部分は引数ですよね?何も受け取らなくてもエラーにならないんですか? >>574
長さチェックしてMAX_PATHを超えてるなら
絶対パスに"\\?\"を付けて試してみたら
(escapeが必要なら"\\\\?\\") >>576
a[0](1)で引数のxに1を渡してる
何も渡さないのはa[0]() >>578
本当だa[0][1]かと思ってたどうも!
しかし面白い言語だ >>577
んー層浅いのに名前だけ超長いみたいな例がありうるんです…
なんか短縮?するのってなかったでしたっけ
c:¥foo~¥bar~みたいなやつ
名前が分からないんだけど、windllあたりを叩いてどうにかならんものか > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw >>576
しかしこれiの値が違う関数が2つ作られたと思わせておいて都度iが上書きされてるってやばいな
Python特有の謎挙動他にもあるんだろうな >>584
変数のスコープを理解すれば謎挙動でもない
for i in range(5)
__pass
print(x) // xは4
FAQにも出てるけど変数のスコープについて詳しく解説されてる入門書を1冊読むといいと思う
クラス変数とインスタンス変数のごっちゃに比べれば理解しやすい >>580
試してみたけど>>577のやり方でTrue返ってきたよ
Path("\\\\?\\" + str(path.absolute())).is_dir() sqlalchemyでfilterに条件式を動的に入れる時って
.filter(Class.【ここ】 == '値')
【ここ】の部分どうしたらいいの・・? 自己解決したかも >>587
from sqlalchemy import text
で
.filter(text("条件式"))でできるみたいだけど
Class.はいらないのだろうか・・
とりあえず試してみます 以下のコードで、数十万行程度の大きめのファイルを作成した場合も
必ずprint("3")はprint("2")の後に実行されますか?
ちゃんとファイルが作成され終わった後に処理をしたい場合、何か必要な記述はありますか?
print("1---------")
with open(FilePath, 'w') as f:
f.write("test")
print("2---------")
print("3---------") >>589
具体的には、ファイルを書き込みし終わった後に
書き込みしたファイルを読み込みたいのですが
問題なく順序通りに処理が行われるのかが気になっています 再帰の内包表記で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']にする感じです >>586
これパスをUNC化するんですね
勘違いしてました。助かりました 一応追記
is_fileやis_dirは通るけど
pilはopenできなかった(FileNotFoundError)
ioはやっぱwindowsのLongPathEnabledが有効でないといかんようだ >>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
なんだかな >>596
PIL で直接開けないときは
io.BytesIO() を使って先にメモリ上に読んで
PIL は bytesIO から読むとうまくいくはず >>596
Pathで渡さずに"\\?\"を追加した文字列として渡せば開くんじゃないかな
Pathで渡すと内部でresolve()呼ばれて"\\?\"がbuilt-inのopenに渡される前に消されちゃってるので
https://github.com/python-pillow/Pillow/blob/master/src/PIL/Image.py#L2967-L2974
面倒なのでパスを短くするかレジストリを変更するかしたほうがいいとは思う >>597
部分適用したいならpartial使えばいい
from functools import partial
a = [partial(lambda i, x: x * i, i) for i in (2, 3)]
Pythonでこういう使い方するのは稀だけど >>598
はー。色んなテクがあるんですね
すごい勉強になります
>>599
いいねボタンがあったら乱打してます pythonでのスクレイピングでbeautifulsoup4とIxmlの使い分けってあるんですか?
今勉強してる本だとlxmlを使うことが多いので使い分けが気になります 内包表記でも同じなんだな。この場合lambdaのローカルではないiはどこに残っていることになるんだろ。
forの場合はループ終わってもiが参照可能だから分かり易いけど。 関数のローカル変数と同じ扱いじゃないかね。
def f():
__r = []
__for i in (2, 3):
____r.append(lambda x, n=i: x * n)
__return r
a = f()
こんなコードを実行しても i がグローバルに現れないのと同じ。 文字列中の「"」(ダブルクォーテーション)をすべて「\"」に置き換えてprintしたいのですがどうしたら良いですか?
↓のコードを試してみましたが、「\」(円マーク)がprintされませんでした。
test = 'aaa="iii"'
test.replace('"','\"')
print(test) >>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 tkinterでアプリを作成しています
ボタンが3つあって、それぞれボタンを押すと次の関数が実行されます
def window(test):
root = tkinter.Tk()
これによって開かれた複数のウィンドウがWindows10のタスクバー上で、
自動的にグループ化されるのですが
これをアプリ側で分離させる方法はないでしょうか? タスクバーの設定だと他のアプリまで分離してしまうのでアプリ側で分離させたかったんですけど
やっぱり方法はなさそうですね
諦めます 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もそうでは・・?みたいな 命名の話っすか
命名スレでやればいいと思うけど普通はhost:port
だよ あー、勘違いした
hostとportがくっついてる場合を何と呼ぶかか なんか盛大な勘違いもありそうだけど。。。
source or destination で良いと思う IPv6なんか通信インフラ屋でない限り全く必要ないからガン無視してok 五教科の平均値を前半期、後半期で出すプログラムを
for文と関数で短めに作るにはどうしたら良いの?
五教科の点数は適当で良いのでアドバイスお願いします アドバイスとして求めるなら、
とりあえず自分で書いてみてアップしたら? Python一年生を読んでて画像表示プログラムを打ってると毎回エラーが出て疲れる
「え?正確に入力した筈なのに何処が違ってる?」
って思うけど、インデント間違いとか大文字と小文字の間違いが一個でもあると動かなくてきついわ >>625
インデント間違いとか大文字と小文字の間違いで苦労してるようなら、
他の言語で閉じ忘れとか、セミコロン入れ忘れたとかなんてもっとめんどくさいと思う jupyter notebookで複数行のテキストをinputする方法はありますか?
input()でshift+return押しても一行分の入力欄しか出てこないです 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)
理解力足りないからこれしか思い付かないが、何も答えられなくて煽るしか出来ないって俺よりバカって事? 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みたいな) >>630
それ動かんだろ。せめて実行してみてからうpしろよ。
print(int(sum(lastb)/len(lastb))) >>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() ) >>632
- return Falseの前で改行したほうがいい
- 何度もa==が出てくる部分はin演算子を使う
- elseを書くかどうかは状況による
pylintとかのlinterを使おう
in演算子を使ったほうがいいみたいなのを含めて注意してくれる >>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 >>635,636
なるほど
ifでinを使えるのですね
def hoge3(a):
_if a in ["sato","tanaka","suzuki"]:
__return False
_else:
__return True
>pylintとか
調べてみます ありがとうございました。 >>636
["sato","tanaka","suzuki"]の部分も外に出して汎用的にスッキリなりそうですね
ありがとうございました >>630
これ4教科を5で割ってしまったのとインデントまでしっかり書き込んだのが表示されてないな
と言う事で
誰か、このプログラムをもっと行数少なめで簡素に書いてくれると助かります >>639
うっとおしいやつだな
一番最初に適切なアドバイスくれたやつ(>>623)に礼言って消えろよ 五教科それぞれの合計数を出すと関数の引数にするまでもなく平均点出せるんだよね… >>639
print(sum(lista)//4, sum(listb)//4) >>642
うおー!凄い凄い!これですよ求めてたのは
あなた頭良いですね、ありがとうございました >>642
「4教科を5で割ってしまった」のと同じバグが発生するぞ 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)) np.mean(np.array(lista))とか? np.mean(lista) でも np.array(lista).mean() でもいける 以下のような辞書があって
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は使えない環境です。 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 は我々に教えてくれます mapする時はPythonでは普通list comprehensionを使う
list_b = [ dict_a[x] for x in list_a if x in dict_a ] linuxでpython動かしたことないのですが
linuxで開発中のpythonコード上でwindowsAPIを実行できますか?
書くだけ書いてwindowsに持ってって実行する感じですか? flaskで
def main():
_from flask import Flask
_app = Flask(__name__)
_aaa=10
_bbb=20
_@app.route("/")
_def test():
__print(locals())
_return app
的な感じで書くと、なぜかlocals()でaaaが取得されるんですがバグでしょうか? 型ヒントで
strのlistかNoneが返ることを書きたい
def test(obj: Any) ->Optional[list[str]]
かなと思ったらエラーが… DataFrameをto_csvでcsv出力すると、CSVの一番左上に入るはずのカラム名(columns.name)が0になってしまいます。
出力するための引数などあるのでしょうか? >>657ですが、説明が正しくありませんでした
csvをDataFrameに読み込む際、header=Noneにするとヘッダには0からの連番が振られると思います。
このデータフレームのヘッダに対してdf.columns=listで別の名前を割り当て、to_csvで出力しました。
ですが、0のヘッダ名が変わってくれません。
1以上の連番が振られていたところは新しい名前に変わっていました。
何か対策などあれば教えていただきたいです。 >>659
実際のデータ見てないから想像で申し訳ないけど
0のヘッダ名になってる所ってインデックスになってない?
インデックスはカラムとは別にタイトルを付ける必要がある
df = pd.DataFrame(data)
df.index.name = 'Date
みたいな感じで' windows10の話なんですが
属性確認すると
program files はreadonlyだけど
program files(x86)はreadonlyでないと言われます
どちらも同じ属性じゃないとおかしい気がするんですが、なぜ異なるのですか? なんでここで聞いたかというと
pythonのstat.st_file_attributes使ってるからです
もしかしたらアクセス方法間違ってるとか
別言語では上手くいくとかあり得るのかなと思って。 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 >>660
ありがとう!!
ご指摘の通りインデックス名が出力されてました
df.index.nameにカラム名と同じ名前をつけて解決しました
to_csvではカラム名は出力出来ないんですかね?
本当にありがとうございました! 例えば、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,西野 もしかしてプログラムでわからないことがあったときって公式のマニュアルを見るのが普通なんですか??
今まで誰かが日本語で説明しているのをググって探してました
公式は英語の直訳で分かりにくくて苦手です >>668
英語の直訳が読みにくければ英語の原文を読めばいいよ 公式リファレンス読まないのはギルティ
読みやすいか、分かりやすいかは別だが 別にググって探すのは悪くないよ。ただ、実際の動作の裏付けには公式のドキュメントの役割が大きい
だから、ググった上で公式のドキュメントも見るような感じがいいと思う
Pythonのドキュメントは原文も同じ書き方してるから和訳呼んでもわからなかったら原文読んでもわからんと思う
翻訳の問題じゃないから、>>668自信の技術力が足りてないか、原文自体の記述が悪いかみたいな話になるけど Pythonに限らず公式のドキュメントを読み慣れるのは大事だと思う
ドキュメントの構成だったり原文と翻訳の時差とか色々癖あるし なんだかんだで公式が一番詳しかったりするからな
フォーラムを巡ってもわからなかった問題が公式ドキュメントであっさり解決して、こんなことなら最初に読んでおけばと後悔したことが何度もある >>668
ドキュメントの書き方はどこの言語でもクセがあるから慣れだな
公式ドキュメントを読むクセ付けないとバージョンによっては挙動が違ったりするから
他の人の奴を参考にしてると稀に挙動が違ってて余計にハマったりする
一番信用できるドキュメントは公式、っていうのだけは念頭に置いておいて欲しい 公式ドキュメントは専門用語をちゃんと使って
正確に書いてるから、そうとうわかってないと
意味不明だろうな 一概にそういうわけでもなくて、文化だったり書いた人の性格や能力に依存するところが大きい
Pythonの公式ドキュメントは上から目線で不親切だと思うよ
Rustなんて遥かに難しくてユーザーのレベルも高いはずだけど、ドキュメントはPythonよりは分かりやすい そうとうわかってないと意味不明な公式ドキュメント・・・
存在する意味がないな 攻略本は読みたくなるけど取扱説明書は読む気がしない >>677
専門家が度忘れしたときや念のために確認するときに役立つ ここのreferenceはまだ全然見やすい方
Java関係の公式とか酷かった
あと世の中の大半のフレームワークの公式は分かりにくいし雑だな
むしろ公式さえしっかりしてればフレームワーク自体は雑でもいいぐらい公式は重要なのに
フレームワークのフレームワークが公式なんだから Javaのoracle公式は内部で探しにくい
記述はちゃんとしていると思うが API一覧はどっかに載せといて欲しいんだよなあ
BeautifulSoupみたいなドキュメント大嫌い androidスマホでクローリングとかスクレイピングとかPythonでやりやすいですか?
あるいは他に楽な方法あったら教えてください(プログラミング言語でなくとも) 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と他のなにかをつかって数値を調整するしか無いんですが var2 = (var+10) / 100
これでどや! > 10から-10の範囲で動く変数 var があって
っと書いてあるのに
> varがプラスになった途端
とか意味わからんので俺は傍観中 単純にリニアに対応させるのはよくやるしありそうだけど
残念ながら標準ライブラリにはない
python MinMax scaling
でググるといろいろでてくる 変数名にvarとかletとか意味わからなくなるからやめろ わざとなのか知らんが
0->10
0.2->-10
なのか
0->-10
0.2->10
なのかはっきりしないな
圧倒的に知能の欠落を感じる そんな事いちいち書かなくても文章見れば分かるじゃない
ガイジなのは一目瞭然 windows環境のpythonで追加モジュールインストールなしでシステム音量を変える方法はありますか
スクリプトを流し終わったらミュート解除して音を流してミュートにする的なことをやりたいです
winapi触るようなイメージなんですが 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 というものを使う必要があるのでしょうか。 >>699
普通はお互いに依存してる部分を切り出して共通クラスを作るぞ >>688>>689
アニメーションさせるオブジェクトの設定を見直していたら数値が変わってしまってvar2は0から1、varが取得する数値が-100から100くらいになってしまったので
最初にあげた数値とは違っていますけど参考にして書き直しました
(10+var)/400 if var >= 0 else (10-var)/400
varが0近辺になるときに返す値を0から1の範囲でうまい具合に動かしたかったんですがこれでなんとかなりました
どうもでした >>699
インポートが実行されるタイミングで循環が発生しないようにすればいい
その例だと「A1Cをimport -> そのためにはA2Cが必要 -> そのためにはA1Cが必要」で循環してる
例えばa2.pyのほうをimport modules.a1 as A1とかにすればインポート実行時には循環しない
設計を変更するのが一番だけど
何か特別な事情があるならインポートを遅延させるとかで対処する >>700,702
どうもです。
という事は、最初1ファイルにズラーッと書いて一段落したからちゃんとクラスごとに別ファイルに分けようと思ったら
切り貼りしてimport文付け足すだけでリファクタリング出来る保証は1ミリも無いという事か・・・ そんなに気にしなくていいよ
そのレベルだと、後でリファクタリングしたくなる頃には今より遥かに腕が上がっていて、最初の頃に書いた糞コードなんて全部捨てることになるから >>699
コードとかレスはよく読んでないけど
公式ドキュメントにはfrom import使わずに全部importだけでやれば回避できると書いてあった気がする
まあ実際には100%問題を回避できるわけじゃないはずだが >>686
オモチャでマジのプログラミングとか考えるな
HelloWorldまでにしとけ
>>698
Vista以降のボリューム変更は確かCOMでしか操作できないんだよなあ
MMDeviceだかってやつ
初心者(が/でなくとも)ctypesから使うのは荷が重い気がする 外部プロセスでPowerShell呼ぶとか
そもそもPowerShellで書くのはダメなのか
適材適所 趣味でゲームを作っているpython初心者です
発想を間違えている気がするのですが調べても独力で修正できないので質問させてください
pythonでは ファイル間を超えて有効な広域配列変数を定義することはできない という理解であっていますか?
アイテム情報や命名マスタなど「あちこちから参照したいマスタデータ」の持ち方が分からず困っています
トップレベル(≒高いレベル)でCSVロードを済ませた配列なりインスタンスなりを、中間クラスの引数として目的の関数まで持ちまわるしかないのでしょうか? モジュールとして参照できる
<vars.py>
X=10
Y=100
<main.py>
import vars
print(vars.X)
print(vars.Y) >>709
テストや柔軟性をかんがえるとクラス化してメソッド(関数)経由にしとくのであってる
Python定番の設定管理向けモジュールがないのが難
>>711
みたいに格納先を変えたい場合でも対応できるし python2でpip等使わずlz4のデータ展開をする方法はありますか? OSにliblz4があるか導入できるならctypesモジュールでいけんじゃない みなさんありがとうございます
pymemcacheが探してた答えのようです
>>712
自分の設計が悪いだけなのでしょうが、引数で持ち回ると全体的にコードが冗長になってしまい正解が分からなくなっていました グローバル変数的なものを格納するだけに使うつもりで、常に1つしかインスタンス化しないようなクラスは、全くインスタンス化せずクラス変数とクラスメソッドで使うというのもありですか?
インスタンス化してインスタンス格納用の変数を用意するのが面倒だなと思いまして。 mockで差し替えたり、初期化を遅延したりしないんならそれでもいいんじゃない
もし必要になったときに見直せばいい
といってもシングルトンの制御いれるだけなんだけどね https://ideone.com/Xn6V4Y
1から10まで数え上げるプログラムで
total = 0をdefの上の行に移動するとエラーになります
>UnboundLocalError: local variable 'total' referenced before assignment
defの中からグローバル変数?は書き換えられないということですか?
あたま痛い 複数行コメントアウトしたいとき
'''
print("hello")
'''
pass
という風にしますが、
解除したいとき変更箇所が2箇所あるのでちょっと面倒だと思いました
なので
#'''
print("hello")
#'''
pass
こうして、上部のみの#を付けたり消したりするだけで切り替えできるようにしてみたのですが
何か不測の事態とか起きるでしょうか? >>719
Pythonの変数のスコープについて調べたほうがいいかもね >>720
それ文字列リテラルでコメントアウトに使うもんやない
Python対応のIDEかエディタつかおう twintってライブラリ使ったことある人おる?
自分のアカウントのすべてのツイートをスクレイピングしてきたいんだが、10日前くらいまでのツイートしかとれなくて困ってる いちばん勢いあるPythonスレがこのスレで、この程度の勢いとか
Pythonほんとに人気あるの? >>726
ありがとう。
昨日から使い始めたけど、ちょうどそのタイミングくらいから他の人も使えなくなったっぽいですね
twintをあと1週間早く知ってればよかった。。 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ファイルをインポートとかしてるからその辺りかもしれない。 初めてwindows使うんですがcondaとpipってどっちがいいんでしょうか
今まではノリでpip使ってたんですがググるとcondaもいいと言われて迷ってきました
主な使用用途は簡単なスクリプトからデータ計算、セキュリティの勉強や自分用のまとめ表作りなど本当に様々です >>730
原因を調べたいのだったら追及すれば良いけど
そうじゃないならVPNとかSoftEtherとかでProxy無しで外に出れるフェイク環境を作ると解決
>>731
pip
ただしcondaが共存してるときはcondaで先に探して
見つからないときだけpip使うようにしてる >>731
pip
condaいらん。無駄なことしたくなかったら入れないほうがいい クラス変数に順次アクセスする方法はありますでしょうか。(define代わりにクラス直下に変数が複数ある状態)
__dict__.valuesで取れるとあったのでリストに入れてforで回そうと思ったのですが、変数以外にいろんな属性がついてきてしまいます。 >>732
原因分かったわ。
世の中に配布されてるcertifiのcacert.pemっていうファイルにこの環境で使ってる独自の証明書のpemファイルの中身を追記したら繋がった。
コピペは避けたいから2ファイル読ませられないかとcertifiを調べたけどcacert.pemが決め打ちだから無理っぽい。
ついでになぜか3.8.5までしか動かない問題をチェックしたがそっちは解消されず。
3.9にすると同じ方法でも繋がらないどころかconda自身のアップデートもできない。
openssl周りじゃないかと思うけど諦めた。 >>738
出先なんで試せてないですが、そんな感じです。厳密には変数名ではなくて値を取りたいです。 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
timeモジュールのですか?
>>743
????
同じコードをこちらの環境(Linux)でも実行しましたがうまくいきました
Djangoでコードを動かすとなぜかうまくいきません
なんで? リストの結合について質問です
リストの先頭要素を末尾に移動したいとします
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]なので加算可能ということでしょうか >>746
大体そんな感じ
"+ (加算) 演算は、引数同士の和を与えます。引数は双方とも数値型か、双方とも同じ型のシーケンスでなければなりません。前者の場合、数値は共通の型に変換され、加算されます。後者の場合、シーケンスは結合 (concatenate) されます。"
https://docs.python.org/ja/3/reference/expressions.html#binary-arithmetic-operations >>747
ありがとうございます
参考URLもどうもです ファイル読み込み時に入力セパレータを改行から他の文字列に変える事は出来ないのでしょうか?
perlなら$/='\n\n'みたいに入力のレコードセパレータを改行2個にしたり出来るのですが
今はファイル一括で読み込んでsplitしてるので読み込み時間がえらく掛かってしまいます
1行ずつ連続した改行がくるまで読んで連結するとかはあまりスマートじゃないのでなにか上手い方法知ってらっしゃる方いましたら教えて下さい open関数のnewlineパラメータでできそうだけど速くなる気がしない >>749
>一括で読み込んでsplit
本当にこれが原因だと思ってるなら
2行ずつ読めば良い first_value = li.pop(0)
li.append(first_value)
実行速度を気にするならdequeとか使うんかね >>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 人間の発想だと改行が2個続くことを条件に分割してやれば早いって思えるけどpythonのあるべき書き方だと違うやり方の方が早いこともありそうな気がするね。
例えばだけど1行ずつ読んでkeyを行番号にvalueにして中身は条件判断せずにテキストを読み込み切ってからvalueを縦に走査して改行のみが入ったところで区切りの処理をするみたいな形にしたら早まらんかな。
元の質問の狙いとしては改行が2個続いたときに普通は使われない文字(例えば▲とか)に1回置換してそこからまた▲を行区切りとして読めば短縮されるのでは?というように見える。
けど756を見るとその置換処理の時点で6秒かかって意味なさそうに見えるわな。 >>756
その程度なら次の行読んで
・データがあるならリストに追加
・空か末端ならリスト終了
でええやん
あるいはBufferedReaderつかってリスト毎に返すioを実装 >>757
質問の意図としては一括払い読み込みのread()は遅いので使いたくない
読み込みが速い1行ずつの処理で行いたいが、perlのようなファイル読み込みセパレーターが改行2個に出来れば
純粋な1行読み込みみたいにループ処理の際に改行のみのデータが来るまでリストや文字列を連結すると言った事をしなくて良いのでその方法があったら知りたいって事です
>>758
やっぱりリスト追加とかやるしか無いんですかね
bufferdReaderとかってヤツは知らないので調べてみます ファイル開くときのopenでnewlineに改行2個入れてみたら? なんか調べてたら公式のissue152248で任意の区切り文字での読み取りの話を色々やられてたんで、それ通りやればとりあえずは望み通りの動きが出来ました
まあ知らない記述やらモジュールとか使ってるんで全く内容理解してませんが
長々と失礼しました、回答頂いた方ありがとうございました よろしくお願いします
tqdmのプログレスバーがリストの長さだけ改行されてターミナル上で表示されてしまいます
これを1本のバーが更新されて表示されるようにしたいです
python3.7.9, VScode, windows10です 1行の長さを適当に100文字と考えて50MB程度しかないのに、buffer(あるいは行)に分割しないだけでそんなに遅くなるもんかな? うちの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 >>765
それはシェルじゃなくてPythonのインタプリタ
pip installはbashやzshみたいなシェルに入力するコマンド
Pythonのインタプリタは基本的にPythonのコードを入力するところ >>764
色々試してみましたが、読み込みと言うよりメモリに一括で入れるのが原因で遅くなる感じのようです
d = fp.read() や d = ''.join(fp) や d = ''.join([x for x in fp])とか色々試しましたけど、これらの場合は遅くて
下記のようにfor文で連結させたら早くなりました
ネットとか見てもjoinの方が速いとか書いてるんですけどね
d = ''
for s in fp:
d += s >>767
自己レスですけどマシンの問題のような気がします
Linuxでやってるとread()がめっちゃ遅いんですが、windowsだと変わらないくらい速いです。
寧ろ+=で代入とかしてる方はクソみたいに遅すぎて、なんでここまでの差が出るのか意味分からないくらいです >>767
どう考えても計測方法・計測環境の問題
キャッシュか空きメモリの影響 メモリ周りだとありがちなのは初回だけ遅くて2回目は早い(python用にメモリ空間を囲うから)だけどそうでもないならOSのファイルシステムの根っこのあたりが腐ってるとかかもな。
個人的に作ってるようなものだったらgoogle colabとかのクラウド実行環境でサクッと検証してみては? >必ず改行2連続で区切られたデータ
readlines() でループ回して一回ずつ飛ばせば良いだろうね >>741
ですが解決しました
sqlite3使ってたせいだったみたいです >>766
ありがとうございます。今度はシェルでpip install sympyが通ったんですが
pip installが通りません。
>pip install
ERROR: You must give at least one requirement to install (see "pip help install") >>774
単純にpip install <インストールしたいパッケージ名>
っていう構文だから
ッケージ名を書いてなかったら、そりゃエラーメッセージ通りのエラーが出るぞ d = ''
for s in fp:
__d += s
これは一番ダメな実装でしょ。
文字列はイミュータブルだから、メモリコピー量が2乗で増えていくことになる。
それでもマシンの能力が「十分」なうちは、他の実装より速いこともありうる、ってだけ。 >>776
随分昔(※Java1.5の頃)から、「文字列結合は"+"ではなく、StringBufferを使うと処理が高速化する」ということが既に広く知られていました。
https://qiita.com/nkojima/items/0098dccbe4a593bc0306
みたいな話かな。
pythonだとどうなんだろ。 >>775
え、インストールしたパッケージ一覧が出てくるんじゃないですか?
誤情報ですかね・・・ >>780
節子、それやりたいならpip listや Elixir は片方向リストで、immutable だから、
先頭への追加ではコピーされないけど、
末尾へ追加するとコピーされる
つまり、先頭のみ最適化される
だから未だに、文字列を追加していく方法が分からない 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. >>779
それってJavaの処理系がさぼっているだけだよねね >>786
スレチだからあれだけど、一応はJDK11で大分改善されたぞ
(それでも+結合が一番遅いけど) >>732
>>734
大変遅くなりましたがありがとうございました
助言通りpipにします 勉強するだけならcondaが便利
でも他システムと繋げにくい formatで
0.1未満なら "5.2%"
0.1以上〜1.0未満なら "5.1%"
みたいに、全体の桁数は固定で値によって少数点以下を調整してくれるような簡易な方法ってないですか?(%だけでなく、fなんかでも)
formatだと丸められるので、単純に
if x >= 0.1 とかはできないので、一旦formatかけてからlenで桁が溢れてないかチェックしてるんですが、もうちょっとスマートな方法が無いものかと。 何回か読み直したが
難解過ぎて俺には文章の意味がわからなかったよorz >0.1未満なら "5.2%"
>0.1以上〜1.0未満なら "5.1%"
ここが逆になってるんだろ?
小数点以下が0.1以上の場合は全て0.2に統一って事じゃ無いの?
そうでないとしたら俺も理解不能だわ。 condaはバックアップ取ったりcloneできるのが便利。 master.py上に実行したいスクリプトtestxx.py(xxは数字)がたくさんあります。
os.systemで引数を渡してtestxx.pyを実行しているのですが、testxx.pyからの戻り値を受け取る場合はどうしたら良いのでしょうか。標準出力の値なら取れるみたいな記述を見ましたが、実行中にprintを多様しているため、任意の戻り値のみを取得したいです。 分かりにくくてすみませぬ
{x:5.2%} {x:5.1%} というformatで
xが0.1=10%、1.0=100% なので、
10%未満なら9.99% まで少数点2桁、
10%以上100%未満なら99.9% まで 少数点1桁
で表示してほしい、という意味です。
全体桁固定で少数点だけ変動するようなformatの表記、あるいはやり方は無いかなという質問です こんなんで
x = 12.125
f'{x:.2f}'[:4] numpyのメソッドzerosやonesなどは引数をタプルで指定することになっていますが、リストで指定しても実行できています。
特に問題ないように見えるのですが、タプルで指定した方がいい理由などあるのでしょうか? タプルは普遍だけれども、リストはそうでないから成長することを想定して必要以上の領域が確保されちゃうぶん効率が悪いとかあるんじゃね?知らんけど sequenceの操作しかしてないから実際はlistでもOKないんじゃない?
onesの説明には
> Parameters: shape: int or sequence of ints
とあるしzeros側のメンテ漏れとか >>803
つければいいだろ…
f'{x:.2f}'[:4] + '%' >>798
こういう事?
x = 0.5
print(f'{x*100:.2f}'[:5]+'%') これで良くない?
str_formatted = f"{val:.2%}"[:4] +"%" >>807
それだとうまくいかんよ。
>>>val=0.5
50.0%
>>>val=1.5
150.% >>808
> 10%未満なら9.99% まで少数点2桁、
> 10%以上100%未満なら99.9% まで 少数点1桁
って言ってるのにわざわざ150%とか出してきてドヤるのは頭になんか障害でもあるのか? >>809
>>798嫁
別にドヤってないし、>>807に値を渡した結果を書いてうまくいかない旨を示しているだけだが?
俺も同じようなの試してうまくいかなかったのでうまくいかないと書いただけ。
急に絡んでキレるのは頭に障害でもあるのか? その>>798から引用してるんだけど…
マジでお前が読めよw すまん。なんか勘違いしてたわw
>>807で大丈夫だな。
俺のだと、こうだわ。print(f'{x*100:.2f}'[:4]+'%') 100%の値を渡した時に表示がおかしくなる書き方した俺が悪かった、すまん
境界値テストをちゃんとやってなかった証拠だな、マジでごめん
(実務でも似たような事やらかすからマジで反省しとる……) >>781
>>782
遅くなり申し訳ありません。ありがとうございました。 質問とは趣旨違いだがコマンドラインアプリでもGUIでめプログレスバーや%進捗表示はまず回避してどうしてもって言われたら超シンプルにしろって昔言われたな。
境界値の扱いでバグりやすい。
ただ本質的なバグではないのに99.9%で完了するとか100.1%まで行くとかのバグ指摘を受けやすい。
あと業務のこと分かってない情シスが仕事してるフリするために何かレビュー指摘しようとして手をつけやすい。
(1%刻みで出力するけど10の倍数だけ太字にして目立たせろとか) もっとも最悪なのは残り時間予測だけどな。
windowsですらあと5分ですって出してから30分かかったり30秒で済んだりするくらいだからよほど単純な処理じゃないと間違える。
テキストファイルのロードみたいな単純な処理でもメモリ圧迫するような挙動だとだんだん重くなるみたいなことあるし。 今までに作ったclassの中で一番行数が多いのってどれぐらいですか?
350行程度のclassでもちょっとわけ分からんようになってきたよ それはこのクラスにはこの系統の処理を置くよ という役割分担が上手くなくて
読むときに負荷がかかってるからだと思うぬ 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 >>819
国名はそれそれ、Austria, Croatia, Congoで処理したいということ?
もともとのデータはリストだったの? AustriaとCroatia, Republic ofとCongo, Democratic Republic of theの3つに分けたい
元々のデータはブラウザから手動で引っ張ってきてコピペした文字列なのでリストではないです 機械的に処理するルールを決めることがプログラミングだよ
とりあえずコンマで分けたあと小文字単語があれば前とくっつける、とやってみたいけど
それで全部うまくいくかね オーバースペックだけど
英名の住所は正規化するAPIやモジュールがあるから
それつかった方が楽だし応用効くよ 国名とそれ以外を分ける必要があるけど
別途国名のリストを拾ってきて、要素を検索しつつ仕分けすればできそう
まぁ、国名リストって時点でアンチョコ使ってるみたいですっきりしないのはおいといて… pythonスクリプトを直接python test.pyって実行すると動くんですが、
bashからtest.pyを起動しようとすると「No module named websocket」と表示され失敗します。
sys.path.appendすると今度は「No module named selectors」と表示されます。
どなたか対処法をご存知でないでしょうか?
環境はCloud9のAmazon Linux 2です。 >>826
モジュール関係でエラーが出た時は
それぞれ一回をsys.pathを出力させて、モジュールの参照先がどうなってるか調べる
(大方実行時に参照してるライブラリのパスが変わってる) >>825
カンニングみたいなニュアンス
この場合は、国名を分離するのに国名リスト使ったらそりゃうまく行くが、国名は200数個に限られているからその辺にいくらでも正しいデータ源が転がっているからいいけれど、
データ源を揃えきれないだろう世界の県名とかだったら成り立たず、うまくいかないだろうからモヤモヤするよねって感じだと思う
元のお題は自動処理するにはもともと筋悪だと思うけどね、バラになっちゃったやつを人間がチェックして結合するのが一番時間かからなくて確実そう >>828
ありがとうございます
確かに直接実行した時とbashから呼び出した時でパスが違っています…
何か違う環境として実行されているということなのか… bashから実行した時はなぜかpythonパッケージのパスが2.7になっているようです >>831
LinuxとかMac環境で実行しようとしてるなら
python test.py ⇒Python2で実行する
python3 test.py ⇒Pyhthon3で実行する
っていう動きになる
とりあえずpython3 --version
を使って、そもそもpythonの3系が入ってるかを見た方が良い
入ってたら必要なライブラリをpython3 pip install〜で入れればOK >>832
ありがとうございます
python3指定で実行するようにしたら成功しました! > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw 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
スクレイピングすると地獄へ落ちるって本当ですか? 君の人生はもう地獄行きが確定してそうだから不安がるなよ 5ちゃんに一日1000回書き込むと極楽浄土が約束されます sphinxのスレってwebpg板にもweb製作板にもここにも無いのか 1)abc
みたいな文字列を")"の位置でsplitで分割したいとき、
1) と abc
のように分割文字も残したい場合、スマートな方法ありますか?
)でsplitして後から )を足す、という方法もあるかと思いますがなんかスマートでは無いですよね
re.splitならできるのかな? re.findall(r'(.+\))(.*)', '1)abc')
[('1)', 'abc')] と思ったらそのサイトの下のほうに
python3.7からre.split()で行けると
a="alpha,beta,gamma"
import re
re.split("(?<=,)",a) 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 nm でそのlibをスキャンしてみたら?
libiconvはどこにつながっている? >>846
libiconvはUで確かに未定義でした pyton3上で地図に棒グラフを立てたいと思い、cesiumpyにたどり着きました。
インストール後、import cesiumpyを実行したことろ、
AttributeError: partially initialized module 'cesiumpy' has no attribute 'data' (most likely due to a circular import)
と出ます。回避方法等ご教示くださいませ。 マイナーなライブラリについて質問しても答えてくれる人いないよ
circular importとか書かれてるけど、まさかそのファイル名がcesiumpy.pyだったりしないよね >>849
ファイル名は違うものですが・・・マイナーなものは難しそうですね。
ご助言ありがとうございました。 >>848
dependencyは満たしているか? スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります >>852
自治体とコインランドリーに許可を取れ
ちゃんと筋を通せば金になるかもしれんぞ >コインランドリーの稼働データを集計して空いてる確率が高い時間帯
台風の最中は空いてそうだ 正攻法は>>853だけど裏技的にやるんだったらMVNOのSIM契約してipとかUAを変えながらスクレイピング。
向こうも機械アクセスだと気づきにくくなる。
ただカムフラしてまでやろうとしたということで相手に迷惑かけるかもって気持ちが入ることになるから訴えられたときには不利になる。 >>852
図書館の例があるから無許可はもう何しても危ないよねっていうのが共通認識だと思うよ フォルダ内のファイルをenumerate()で一括連番リネームします
リネーム後の名前が既存かもしれないとき
1回目のループでexistsならパスとリネームを記録,大丈夫ならリネーム
2回目のループで記録したパスをリネーム
これで重複回避して全件リネームできますか?
手元ではできてる気がするんだけど,例外パターンがあるような気がする
(windowsのロングパスとか編集不可属性とか並び順の話は置いといてください)
--
元 : 新
000.txt → 1.txt
00.txt → 2.txt
1.txt → 3.txt
3.txt → 4.txt
こういうことがしたいのです >>853-856
回答ありがとうございます
心配性なので許可を取る以外のリスク回避策も知りたいのです
例えば、プログラム書いてもバグでF5アタックレベルの猛烈なアクセスをすることってありえますよね
そういうのが起きないような安全装置の作り方
自前で作ったサーバにも同時にアクセスしてアクセス頻度を証明するログを取る(v6共有IP巻き添え捜査対策)
何らかの理由で訴えられたとき勝つための材料を集めておく
などの方法を教えてくれる書籍がないかと探しています .netだとtempのファイル名を持ってくるメソッドがあったな。
個人用途でリネーム中に他人がファイル名を変更するという懸念がない条件ならランダム英数字の中間ファイル名を経由してリネームすればいいんじゃない?
企業ユースとかでしっかりやる必要のある処理かつリネーム中の障害とかまで考えるなら安直なリネームは処理中の状態が不安定だから禁忌だと言われるね。
ファイルコピーすると同時に名称変更してリネーム後のファイル群を作り完成したところで元ファイルを削除みたいな動作にする。
(もちろんスピードやディスク容量とかの要件とも相談) 対象フォルダにtmpフォルダ作ってそこにリネームして入れていけばいいんじゃ >>857
その方法だと下の3行のリネームも無理じゃね
0.txt→ 1.txt
1.txt→ 2.txt
2.txt→ 3.txt
俺は、1回目でリネームできないときは
uuid.uuid4().hex を付加してリネームして
2回目で、uuid.uuid4().hexを付加したファイルを、目的のファイル名にリネームしてる >>857
000.txt -> 1.txt -> 2.txt -> 3.txt -> ... って無限に繰り返す危険は0と言い切れる? >>863
あーそうか…
じゃあexistsのときはunique_suffix付きでリネームして
最終的にケツ削る感じにします
uuid知らなかったんですが、いいですねこれ
今回は259文字制限下なのでアレだけど勉強になりました >>865
ちなみに、existsするのがフォルダだった場合処理できないよ
2.txtみたいな名前のフォルダ・・・ >>852
素人は、本番サーバーでテストしてはいけない。
素人のアプリは、バグで無限ループして、何万回もアクセスするから
必ずダウンロードして、自分のPC 内でテストしないといけない
それと本番サーバーに、100回とか繰り返しアクセスする場合は、
必ず、相手のrobots.txt を遵守すること!
または、相手と契約して、API を使うこと
基本、スクレイピングは営業妨害との戦い。
どの本にも、そう書いてある。
スクレイピングを推奨する本はない
必ず、robots.txt 遵守か、許可を得る、または契約すべき
山浦清透、2021/6
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI
この動画では、Laravel で、マイナビ転職をスクレイピングしている。
27:40 から、robots.txt を調べている selenium(ChromeDriver)で
すでにbuttonのWebElementまで取得している状態で、単にそれがクリック可能になるまで待つときはどう書けばいいの?
イメージは↓こんなだけどWebElementは引数に与えられないみたい。
WebDriverWait(driver, 5).until(
EC.element_to_be_clickable(button)
) ある条件を満たした時にプログラムを再起動したくて
subprocess.call(__file__, shell=True)
と記述してるんですが挙動がおかしいです
どうおかしいのかと言うと、プログラムを強制終了したい箇所で
sys.exit()
と記述してるんですが、そこでも再起動されてしまいます
どう改善したら良いでしょうか >>870
WebElementオブジェクトからlocarorって取得可能?
今回のbuttonが、findで一意に特定できないエレメントだから、Waitの例でネットによく書いてあるBy.xxxの書き方だと、複数のbuttonがWaitの対象になってしまうんだよね
特定の1つのエレメントだけをwaitの対象にしたいのだが >>871の補足です
subprocess.call(__file__, shell=True)
で、一度再起動した後で、
sys.exit()
を実行すると、強制終了しないで再起動してしまう挙動を何とかしたいということです 自己解決しました
>>871と>>873の質問は撤回します 頭のおかしい人に以下のようなことを言われました
>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない
具体的な書籍名を教えてください
>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない
どこでそんなルールが決まっているのでしょうか? >>876
> どこでそんなルールが決まっているのでしょうか?
決まってないよ
ただ普通の頭持ってたらマルチポストが回答者に失礼だと言うことはわかるはず >>876
Rubyガイジに頭悪いと指摘されるとか相当だぞ
肉塊の方が賢いまであるなw >>872
カスタム待機条件を作って elem.is_enabled() を返すのは? >>882
なるほど、カスタム待機条件というのがあったか。
これでエレメント引数にした待機できた。ありがとう 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
エラーが表示されないようする方法をご教示いただけませんか
エラーが表示されるだけで問題なく動いていますが気持ち悪いので pythonで、いわゆるDBのコネクションプールのような、限られた複数資源をプールにして使い回す基本的な仕組みって何かありますか?
DBで使うわけではないので汎用的なものを想定してます
たとえば資源として5つのインスタンスがあり、要求側はそれのいずれかが空いていれば排他的に1つのインスタンスを獲得し、すべて獲得済みの場合は任意の時間待機させる、というイメージです
要求側は必要な処理が終わればインスタンスをプールに返します
キューを使ってできそうな気がしますがもう少し実装しやすいものとかありますかね? >>885
しったかで書く
PyPIで多数ヒットするけど逆にこれってのはないからインターフェイスの好みで選択
どうせ中身はQueueかdeque
DB接続でいうとドライバやミドルウェアにだいたい専用のが付いてくる >>886
ヒントありがとう
PyPIで見たら確かにだいたいqueueで実装されてた。ソース参考にして実装してみます Pythonも最近ではそんな真面目な用途でも使われそうな感じになってきてるのか。
おじさんびっくりだわ。 独学プログラマーを読んで勉強始めた方いますか?
Amazonレビュー見ると意味不明なURLや冗長な表現など初心者を惑わせる表記があるようで
初心者向けとは言えないような印象を受けますが、通しで読むとちゃんと初心者向けになってるのでしょうか? self taught programmerは英語版をパラパラと眺めた程度だけど、悪い本じゃないと思う
どの教材にも欠点はあるから、多少のことは気にせずにさっさと取り掛かったほうが良いと思う
初心者が自分にとって完璧な教材を見つけるのは無理
他の本のほうが良さそうなら他のでもいいし、無料のweb教材でもいいし ちなみに『独学プログラマー』は「自力でプログラムを覚えて仕事を始めるまで」が一番大きなテーマであって
pythonのことを手取り足取り教える目的で書かれたものではない
単純にpythonの基本を学びたいだけなら、もう少し狭い内容を扱った他の本が良いかもしれない そもそも独学出来るようなプログラマーならそんな本読まなくても出来るからな >そもそも独学出来るようなプログラマーならそんな本読まなくても出来るからな
これはその通りで、基礎的なことは全部ネットに無料で落ちているので、わざわざ本を買う必要はない。
本で学ぶのが好き、って人もいるだろうから全否定するつもりはないけど。 spring bootは本買わないと無理あのntt data様が出してる奴 >>888
LAMP(Linux,Apache,MySQL or MariaDB,PHP or Perl)のPがPythonに移行されつつある
DBの方もPostgreSQLに変わりつつある Apache も Nginx に移行してるから LNPP かな? いまさらPostgresが主流になるような感じはしないがな。
DBMS全体でPostgresのシェアは上がってきているがMySQLも同様にシェアを拡大している。
そもそも普及率が倍くらい違うし。 MySQLはOracle→MySQLに意図的にOracleが動いてるみたいね まあ倍半分違う(対数スケールなので注意してね)からそうそう主流が入れ替わることはないと思うけど PostgreSQL と MongoDB が頑張ってるな
https://news.mynavi.jp/article/20200403-1009423/images/002l.jpg postgreSQLは最近覚えたけどそこまでメリットは感じない
pythonから叩くにあたってmysqlから面倒くさい部分は増えた pip listでsympyが確認できるのに
>>> import sympy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sympy'
となるのはなぜですか? インタープリターに入らずにpip install sympyだって前ここで誰かが言ってた気がする 実行したpipはver2系だったってのは(俺が)割とよくやるミス >>902
PostgreSQL用ドライバ必要だからな >>904
>>905
pipでもpip3でももうインストールされていますみたいなメッセージが出ます >>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 をなんとかしたい >>867
レス遅れてしまい申し訳ありません
時間つくっていくつか書籍を立ち読みしてみましたが
訴えられる前提でスクレイピングする本は当たり前のようにありませんでした
テストサーバでプログラム作ってから、相手に連絡した上で動作させるのが最低限のマナーで
あとはもう自分で創意工夫して逮捕防ぐしか無いですね >>730
このpython3.8だとproxy繋がるけど3.9だとダメになる問題は自分自身で解決しますた。
https://github.com/psf/requests/issues/5740
こことかそのリンク先に書いてある。
社内環境でセキュリティのためproxyでHTTPS通信を復号化してるんだけどそんな特定条件で起こるらしい。
.condarcのhttpsのproxyをサンプルを真似してhttps://hogehogeって書いてたけどhttpに修正したら繋がるようになった。 pandasで下の様なデータフレームOLD,NEWがあります。
df_OLD
商品名 価格 種類
0 バナナ 100 フルーツ
1 トマト 150 野菜
df_NEW
商品名 価格 種類
0 バナナ 120 フルーツ
1 トマト 130 野菜
OLDとNEWを商品名で比較して、一致した場合にNEWの値と置き換えたいときってどの様にしたら良いのでしょう?
一気に比較してくれる方法とかあるんでしょうか?
1行ずつ比較しないといけないのでしょうか? >>915-916
後出しみたいになって申し訳ありません。
update試しましたが、同一行を置き換えるのですね。
やりたいこととしては、NEWの方は並び順は一致せず、
さらに新規データの追加やキーとなる列(商品名)以外の内容の変更もしたいのです。
df_NEW
商品名 価格 種類
0 スイカ 150 野菜
1 バナナ 120 フルーツ
2 トマト 130 野菜B やりたいことが良く分からないんだけど
(1) df_NEW のデータは全て保持したい
(2) df_OLD にあるもので、df_NEWに無いものはdf_NEWに追加したい
という解釈でも良いのかな?
それなら df_NEWと df_OLD の差分をとって、そのうちdf_NEWに欠けているものをdf_OLDから追加するという方法でも良い? >>918
わかりづらくてすみません。
・OLD側に同じ商品名があればNEWの内容で更新。
・ NEWにしか無い商品はOLDに追加です。 >>919
df_NEWというのはすでにpandas.DataFrameの形で持っているということで良いですか?
その場合、df_NEWに入っている値は全て正しい(更新する必要はない)ということになりますよね。おそらく。
それならdf_OLDを更新するという発想にこだわる必要はなくて、NEW無いものをOLDから追加するという発想に転換しても良いのでは?
その場合、私ならmergeを使うと思います。
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html >>920
ありがとうございます。なるほど、そっちの考え方の方が良さそうですね。
ちょっと試してみます。わからなかったらまた質問させてください。 現状のままだと、希望結果=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 しかし希望する結果は以下のとおりです。
この様にしたい場合どうしたら良いのでしょう?
df_New2**************************************************
商品名 価格 種類
0 スイカ 150.0 野菜
1 バナナ 120.0 フルーツ
2 トマト 130.0 野菜B
3 人参 50.0 野菜C すみません。式は以下です
df_New2=pd.merge(df_New,df_Old,on=['商品名'],how='outer') 日本語で仕様が決まったらまたご相談くださいって感じかな。
その場合はこうして欲しいってのがコロコロ変わりそう。 正規表現の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' だけが取得されるのでしょうか 必要な部分は()で囲え
不要な部分は(?:)にしろ >>927
あ〜〜途中の \d{3} などは () で囲われてないからグルーピングされてないために弾かれちゃってたんですね
以下のようにして
https://techiedelight.com/compiler/?SVye
以下の出力結果を得ることができました
[('012-345-6789 x 123', '012', '-', '345', '-', '6789', ' x 123', 'x')]
最後に取得されている x については (?:) を使用するんでしょうか?
(?:) という記法についてまだ知らないので調べてみます
レスありがとうございました いろいろ試して、以下で思う様な結果を得る事ができました。
アドバイスありがとうございました。
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”で終わる列とかで指定できるのでしょうか? >>923
それだったら、同じ商品名のデータを上書きするっていう考え方じゃなくて、
oldだけに有ってnewに無いデータだけ抽出して
それをnew側のdfにくっ付けるってやり方があるかな
一応、想定通りには動くけど
大分不細工なやり方になっちゃったから許して……
https://ideone.com/oxdsR3 del_old_df = old_df[old_df["商品名"].isin(new_df["商品名"])]
こんなこともできるんですね。ありがとうございます。
こっちの方がてっとり早いですね。 >>909
pip show sympy
のLocationと
import sys, pprint
pprint.pprint(sys.path)
を見比べてみよう ファイルの最後の行に
return 1
と書くと、「SyntaxError: 'return' outside function」
というエラーが出てしまいます
ファイルの最後の行に書く必要はないってことですか? 関数の最後の行には書くのに
ファイルの最後の行に書いちゃいけないのは何故ですか? では、親プロセスに戻る時に
どうやって戻り値を返すんですか? >>939
そうやるんですか
ありがとうございます もしかして
1 名前順並び
2 ファイル名は任意
という条件で
指定したファイルの1つ下に新規ファイルを保存する
って難しいですか?
makeChildPathName()みたいな関数が作りたい
https://i.imgur.com/Oa07h0G.png
2番目のファイルパスを指定したら2番目と3番目の間に新規ファイルを挿入保存したいということです 任意のフォルダ下のファイル名を取得して自分で並べ替えて挿入すればいいじゃん。
自分だったらWindowsのファイルの並び順の仕様を調べてPython側で同じように並べ替える。
それがめんどくさければsubprocessでDIRの結果を取ってくる。
「間に入るように」の部分は仕様が不明確だから答えようがない。
もし仕事なら_001とかつければいいと思ってるなら危険。
挿入されるファイルの規則に沿ったファイルがあらかじめ存在した場合にどうすればいいのかとか元のファイル名がパス260文字のギリギリまであったらどうするかとかまで詰めないと。 >>942
path1<new<path2
になる文字列の自動生成でしょ
無理じゃないか
windowsは仕様公開してないし >>943
元のファイル名は、数字のみといった規則があればできるかも
汎用的なのはリネームしないと挿入できないケースもあるしめんどいね
パスの長さの規則もないと辛い plot_surfが僅か3600座標の描画で20分以上掛かる
点の散布図なら100万座標でも1分未満だが windowsはcmdプロンプトでdirした順番と
explorerで観れる順番がそもそも違うし
sortしても解決しないω >>946
explorerでってんだからAPIソート1択でしょ。そこは 辞書のkeyに対するリスト型のvalueを使いやすいように良い感じに分解したい、または取り出したいんですがどうやれば良いんでしょう? ただの2次元データだから
keyとリストのindexで2回解決したら任意のデータにはたどり着けるけど
どう扱いたいのか目的がわからんとなんとも 分解しないでどうやって辞書の値のリストを取り出せば良いのですか? どっかのサイトからパクってきた
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) >>954
ああこういうこと?
arr = {key1: [1, 2, [['target', ...], ...], ...}
print(arr[0][2][0]) 取り出すというのが削り出すの意味なら
>>> 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]} 間違えた
arr = {'key1': [1, 2, [['target', ], ], ], }
print(arr['key1'][2][0])
私も勉強中です 全然わかんないっす…w
イメージ的には辞書に、test1とtest2というキーがあって、
test1のvalueがリスト形式で
name, tanaka
age, 30
のときに
printでnameとtanaka を表示させたいです >>960
実際のデータ構造をちゃんと書いてもくれんと全く分からんぞ
レス通りの内容だとこんな感じになるけど、明らかにデータ構造が変だし
https://ideone.com/wmN9cT おお、こんなサイトあるんですね
ちょっと勉強がてら実データ入れてやってみます!ありがとうございます >>962
>>> for _, name, _, age in data.values():
... print(name, age)
...
tanaka 30
suzuki 28
>>> for key, [_, name, _, age] in data.items():
keyがほしれば >>960-961
この流れ完璧に各地の現場で毎年繰り返される先輩と後輩の間のやりとりだな。
こうしたいんですって説明させることで質問者の脳みそが活性化されて問題の90%くらいは解消される。
残り1割は便利なメソッドややり方を知ってるかどうかだけという。 openpyxlで指定の範囲例えばA1:C5のセルの外枠だけ罫線引くのはどうすれば良いですか? >>967
んー、あまり参考にならなかったんですけど結局はセルの1つずつでしか罫線引けないんで
複数範囲のセルの外枠のみを引こうと思うとforで回して上下左右辺のみの時だけ対象の罫線引くって処理にするしか無いんですかね だったら最初から1発で線引くことできますか?って聞けや すみません、openpyxlで指定の範囲の外枠のみの罫線を1発で引く方法ありますか? pythonのコマンドライン引数にJSON.stringifyした辞書を含む配列を渡すと、
辞書の中身が配列として分割されてしまいます。どうしたら辞書をそのまま渡せるのでしょう?
VSコードに渡した引数
"args":["[{¥"test¥":¥"a¥",¥"testB¥":¥"b¥"}]"]
argv[1]:'["test":"a"]'
argv[2]:’[“testB”:”b”]’ 普通はコマンドライン引数に、JSON などのオブジェクトの構造物を渡さない。
構造物はファイルにまとめて、アプリ内で、そのファイルを読み込む
コマンドライン引数は、「a b c」みたいな空白区切りの文字列だけ ありがとうございます。
配列のみだと問題なかったので、大丈夫かと思っていました。
一旦書き出してから読み込むことにします。 AnacondaのidleがC:\〜〜\[username]\Anaconda3\Scripts\の中にあるのを
今更知ったw
多少のファイルを作りながら動かすなら一々JupyterやらSpyderやらを
重いなあと思いながら開かなくても良かったって事か >>975
Anaconda prompt も一緒にインストールされるだろ?ショートカットも出来てるだろ? >>977
この返しはベテランの香りがしますねぇ。
base58にすると通っぽいけど余計な混乱を巻き起こすから滅多なことでは使ってはいけない。 Anaconda promptだとファイルを作りながら実行って考えるならidleより面倒 base64と言っても
. とか / とか使うパターン以外に
+ とか - とか使うのもあるし
都合が悪ければ適当にコマンドラインで安全なキャラクターを選んで良い
base64 の亜種 idleってコメントをPEP8準拠(# )にできないの? パソコン上で選択中のフォルダかファイルのパスを取得したいんだけど
各種ダイアログ経由しない方法ってありますか?
例えばGUIにコピペボタンを実装しといて
エクスプローラーでファイルクリック
GUIボタンクリックでその場に複写 みたいなことがしたいです SHIFTを押しながら右クリック→”パスのコピー”をクリック > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw >>983
簡単にできるかと思ったけど難しい気がする macのFinderなら割りと簡単だけど
Explorerだと拡張書くか探すことになりそう
Pythonだけでは書けないし エクスプローラーは選択されてる状態でCTRL+Cでもクリップボードにフルパス入るから
キー入力メッセージ送ってクリップボード読めばいいんでね 要件はオブジェクトクリック、GUIクリックでしょ
間で操作入れるなら普通にダイアログ出せばいい その要件が普通じゃ無いこと気づけよー
エクスプローラーが複数立ち上がってたらどうするの?
ファイル選択できるのはエクスプローラー限定なの?
Windows のマナー通り、ファイル選択ダイアログを
出せば済む話だと思うんだが。 >>975
VSCodeのPythonのpath欄にAnaconda(の特定環境の)python.exeのあるフォルダのアドレス(世に言うpath)を
入力すればいいだけ エクスプローラーからSendToかドラッグ&ドロップだな
SendToはショートカットも割り当てられるのでキーボードだけでも操作可能
ただ起動中のGUIで受け取るためにはそれ用の受け口を用意しておく必要がある
コピペはUXとして微妙なので人に使わせるアプリならやめたほうがいい気がする 例えば、デスクトップにショートカットを作って、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 Ruby 2.5
status: eol
release date: 2017-12-25
EOL date: 2021-03-31 WSL2, Ubuntu 18.04 には、
日本人が作ったanyenv で、Ruby 2.6.6 をインストールしているけど、
Windows 用のMSYS2 のRuby では、Ruby 2.6 以降、
巨大なコンパイル環境を入れないと、コンパイルできないモジュールがあるので、やっかい
それで、Windows用Ruby は、2.5 を使っている
また、WSL2 には、drag & drop できない >>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})') このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 113日 18時間 31分 34秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。