!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。
・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
エラー文(勝手に省略orスクショうp等の横着禁止)と
おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。
※前スレ
Pythonのお勉強 Part72
https://mevius.5ch.net/test/read.cgi/tech/1703659345/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
Pythonのお勉強 Part73
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ f610-G7il)
2024/06/06(木) 08:48:10.07ID:DsazphEm0786デフォルトの名無しさん (ワッチョイ 82ad-aK75)
2024/08/31(土) 18:14:58.61ID:fwQH707u0 >>785
ありがとう!固定要素数じゃない場合の例が思案に明け暮れていたとこで、助かります!
丁度さっき、そうだ受け取ったstrに応じる形で"関数側のcase match文"で
決められた格納場所に同じく受け取ったvalueを書き込もう、としていました
コマンドウィンドウを開いているか否か0or1みたいなものを
StatsクラスのStats.write("commandopen", 1)、これの第一引数をcaseでふるいにかけ書き込むべきインデックスに辿り着く感じ…(>_<)
ありがとう!固定要素数じゃない場合の例が思案に明け暮れていたとこで、助かります!
丁度さっき、そうだ受け取ったstrに応じる形で"関数側のcase match文"で
決められた格納場所に同じく受け取ったvalueを書き込もう、としていました
コマンドウィンドウを開いているか否か0or1みたいなものを
StatsクラスのStats.write("commandopen", 1)、これの第一引数をcaseでふるいにかけ書き込むべきインデックスに辿り着く感じ…(>_<)
787デフォルトの名無しさん (ワッチョイ 8601-3oMX)
2024/08/31(土) 18:51:32.93ID:mruaKbs00 {“commandopen”: 1}がkey/valueなら
素直にdictionaryで状態管理したほうがいいんじゃないかな
case文やインデックス変換なくせるよ
素直にdictionaryで状態管理したほうがいいんじゃないかな
case文やインデックス変換なくせるよ
788デフォルトの名無しさん (ワッチョイ 82ad-aK75)
2024/08/31(土) 18:59:52.21ID:fwQH707u0 たしかに…辞書やjsonといった物の扱いに恐怖心があって無意識に避けてたかも
789デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/01(日) 08:53:52.90ID:5+RJ54+E0 前回と今回のid一覧があって、
今回追加分のidに該当するものがなければ終了
みたいな処理をどう書こうか考えてて、
結局setの演算にしたら1行になった
setむっさ使える
今回追加分のidに該当するものがなければ終了
みたいな処理をどう書こうか考えてて、
結局setの演算にしたら1行になった
setむっさ使える
790デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 14:46:18.35ID:V2ztMrfU0 テキストをフィルターしていて、
特定の行があったら、その前後の行も削除して出力したい
後ろも削除はiterでnext()すれば飛ばせるけど、
すでに出力しちゃったものを無かったことにするのが難しい
一旦全部バッファに溜めておくしか無いのかな
特定の行があったら、その前後の行も削除して出力したい
後ろも削除はiterでnext()すれば飛ばせるけど、
すでに出力しちゃったものを無かったことにするのが難しい
一旦全部バッファに溜めておくしか無いのかな
791デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/02(月) 16:47:53.26ID:ciLmvDW/0 全部じゃなく
1行バッファして次が来たら出力する部品でいいんでは?
もちろんバッファ削除とフラッシュの機能もつける
1行バッファして次が来たら出力する部品でいいんでは?
もちろんバッファ削除とフラッシュの機能もつける
792デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 17:05:31.51ID:V2ztMrfU0 削除する必要が最大1行ならいいけど、実際には2行のケースもある
793デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/02(月) 17:13:39.22ID:ciLmvDW/0 理解力というか応用力低すぎて草
794デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 17:30:55.08ID:V2ztMrfU0 んー、そんな小手先で回避してたらすぐ行き詰まるよ
795デフォルトの名無しさん (ワッチョイ 5f6e-a21C)
2024/09/02(月) 17:52:44.67ID:DywOJmSg0 1回目は削除インデックスを確保するだけで2回目のフィルタリングでそのインデックスを削除する
何行削除でも可能
何行削除でも可能
796デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 18:08:44.35ID:V2ztMrfU0 なるほど2パスにするのか
入力はファイルなのでそれで十分だし高速だしメモリも食わない
ストリームにまで対応可能な方法は多分ない
入力はファイルなのでそれで十分だし高速だしメモリも食わない
ストリームにまで対応可能な方法は多分ない
797デフォルトの名無しさん (ワッチョイ 072a-DKuy)
2024/09/02(月) 18:18:02.18ID:cZu9PahF0 >>790
俺にはこの話題の sed コマンドは全く理解できないが、解るなら python に移植してみてはどうだ。
https://mevius.5ch.net/test/read.cgi/unix/1085730992/593-
俺にはこの話題の sed コマンドは全く理解できないが、解るなら python に移植してみてはどうだ。
https://mevius.5ch.net/test/read.cgi/unix/1085730992/593-
798デフォルトの名無しさん (ワッチョイ 5f86-NFJX)
2024/09/02(月) 18:18:35.06ID:0P3ClJWr0 dpでやるやつじゃね?
799デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 18:24:28.25ID:V2ztMrfU0 sed的にやろうとすると、ファイル全体を読み込んで検索して、というやり方と同じなので、
メモリはファイルサイズだけ食うことになる
sedはそれをストリームに対してやるのでメモリ食わない
メモリ節約するなら最低限だけ読みながら、という処理になるけど、
最低限が何行なのかは条件次第なので条件の解析までやらないといけなくて、
ツブシの効かないコードを頑張って書くことになる
メモリはファイルサイズだけ食うことになる
sedはそれをストリームに対してやるのでメモリ食わない
メモリ節約するなら最低限だけ読みながら、という処理になるけど、
最低限が何行なのかは条件次第なので条件の解析までやらないといけなくて、
ツブシの効かないコードを頑張って書くことになる
800デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/02(月) 18:39:20.59ID:ciLmvDW/0 主に最適化の理由で出力のバッファリングはPython内外で透過的に行われてるし
そこに出力遅延するio.Writer追加するだけの話
バッファはいくらでも動的に確保したらいい
小手先らしいけどそれで必要十分
そこに出力遅延するio.Writer追加するだけの話
バッファはいくらでも動的に確保したらいい
小手先らしいけどそれで必要十分
801デフォルトの名無しさん (ワッチョイ df31-XDF5)
2024/09/02(月) 18:49:11.43ID:R3lh7LPd0 本人がバッファリングが必要な範囲を抽象化して捉えられてないから1行とか2行とかって説明になるんだろ
最近出現頻度の高い末尾54さんはいつもこのパターン
最近出現頻度の高い末尾54さんはいつもこのパターン
802デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/02(月) 18:53:10.49ID:V2ztMrfU0 前後の行としか書いてないけどな
前後n行だよ
バッファリングするのはいいとして、フラッシュのタイミングが不明だとどうしようもない
前後n行に絶対引っかからない行が定義できない
前後n行だよ
バッファリングするのはいいとして、フラッシュのタイミングが不明だとどうしようもない
前後n行に絶対引っかからない行が定義できない
803デフォルトの名無しさん (ワッチョイ 5f6e-a21C)
2024/09/02(月) 18:56:45.68ID:DywOJmSg0 前の全部の行が削除対象になり得ることを考えるとストリームにやるなら全部バッファに溜めるしかなさそうだ
804デフォルトの名無しさん (ワッチョイ ff7c-rxv+)
2024/09/03(火) 15:35:20.10ID:GbfXXZxt0805デフォルトの名無しさん (ワッチョイ 5f4d-XDF5)
2024/09/03(火) 21:07:40.33ID:l2RoLSBv0 N行が全行−1行になることもあるから1パスだとメモリ食ってヤダって話みたいよ
そもそもの問題認識が間違ってるよね
そもそもの問題認識が間違ってるよね
806デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/03(火) 21:28:25.04ID:b8qS9knc0 今やメモリなんて膨大にあるから、1億行でも平気
そんなこと気にしないのが簡単でかつ現実的
一応気にして2パスにするのも、比較的簡単
中途半端に気にして対応すると手間がかかる上に不完全になる
そんなこと気にしないのが簡単でかつ現実的
一応気にして2パスにするのも、比較的簡単
中途半端に気にして対応すると手間がかかる上に不完全になる
807デフォルトの名無しさん (ワッチョイ 5f5c-1cCN)
2024/09/03(火) 22:33:39.88ID:2uJG6i7Z0 じゃあ何を悩んでたの?
よく分かんねーけど能書きの前に常識として謝辞のひとことくらい述べたらどうかね
よく分かんねーけど能書きの前に常識として謝辞のひとことくらい述べたらどうかね
808デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/03(火) 22:36:18.67ID:b8qS9knc0 なんか知らんけど、勉強する気のない奴が紛れ込んでるんだよな
809デフォルトの名無しさん (ワッチョイ e768-3eZc)
2024/09/04(水) 10:07:28.75ID:1egc59UO0 slenium使ってWebページの巡回してますが、CSSセレクターやxpathが日によって変動する場合の対処法をご教授願えれば幸いに存じ上げマッスルマッスル。
810デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 13:21:36.89ID:8f/9E+Y70 フルで指定しなくても部分でもいけるので、変わらない部分を使う
811デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 16:46:15.23ID:8f/9E+Y70 またストリームっぽい話
デリミタ行があって、それで区切った単位で処理する
デリミタを見つけたら処理、みたいにすると、デリミタ無しで終了した場合に最後が抜ける
元データの方で最後にもデリミタを入れる
ループを抜けた後に同じ処理を追加する
デリミタ or EOF みたいな判定にする
等の対応があって、EOFがスマートそう
でもEOFの検出が大変
ファイルを1行ずつ読んでても次を読んでみないと判らないし、
iterでも例外を起こすとか、リストが対象だったらコピーしといてpopしていって空か見るとか
最後まで行ったら自動で終わる処理はとても書きやすいのに、
最後の処理の最中に最後だと判定するのが困難
デリミタ行があって、それで区切った単位で処理する
デリミタを見つけたら処理、みたいにすると、デリミタ無しで終了した場合に最後が抜ける
元データの方で最後にもデリミタを入れる
ループを抜けた後に同じ処理を追加する
デリミタ or EOF みたいな判定にする
等の対応があって、EOFがスマートそう
でもEOFの検出が大変
ファイルを1行ずつ読んでても次を読んでみないと判らないし、
iterでも例外を起こすとか、リストが対象だったらコピーしといてpopしていって空か見るとか
最後まで行ったら自動で終わる処理はとても書きやすいのに、
最後の処理の最中に最後だと判定するのが困難
812デフォルトの名無しさん (ワッチョイ 5f4d-JZrR)
2024/09/04(水) 16:53:37.40ID:mtP1OC380 日本語を見ればプログラミング適性がないのがよくわかる
813デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/04(水) 17:15:00.32ID:u5L50CbY0 デリミタ行以外で終端になったら
追加でデリミタ行を返すイテレータを書くだけ
追加でデリミタ行を返すイテレータを書くだけ
814デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 17:24:08.15ID:8f/9E+Y70 データ数nでデリミタ数n-1、という気持ち悪い状態が自然によくあるんだよな
joinで結合して、splitで分解するのと同様に、
デリミタで分解する処理を最初に入れるのが多分正解
最後のデリミタがあってもなくてもいいようにしないといけない
joinで結合して、splitで分解するのと同様に、
デリミタで分解する処理を最初に入れるのが多分正解
最後のデリミタがあってもなくてもいいようにしないといけない
815デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 17:28:38.80ID:8f/9E+Y70 分解する処理が全く同じ問題にぶつかるんですが
816デフォルトの名無しさん (ワッチョイ 87a9-vKF2)
2024/09/04(水) 17:30:47.74ID:6BJD9ak60817デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 17:33:35.02ID:8f/9E+Y70 perlだったら、f = open(file) みたいなので取得したファイルオブジェクトに対して
eof(f) を見たら終端に達してるかどうかが判る
pythonでもf.eof() みたいなのを作っといてくれればいいのに無いというのは、
そんなプログラムは書くなという明示的な意図なんだろうな
便利なのになー
なんで駄目なんだろ
eof(f) を見たら終端に達してるかどうかが判る
pythonでもf.eof() みたいなのを作っといてくれればいいのに無いというのは、
そんなプログラムは書くなという明示的な意図なんだろうな
便利なのになー
なんで駄目なんだろ
818デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 17:54:41.94ID:8f/9E+Y70 仕方ないからsplitのlist版を汎用で書いて、自分用ライブラリに入れとこう
これも意地悪で存在しないのか?
これも意地悪で存在しないのか?
819デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/04(水) 18:09:05.10ID:u5L50CbY0 more_itertools.split_ナントカ
820デフォルトの名無しさん (ワッチョイ ff7c-rxv+)
2024/09/04(水) 19:07:28.42ID:8eJhy0Tz0 >>0811
1行単位で読みつつ複数行単位で処理したいループのあるあるだね
Pythonならイテレータやジェネレータを使うかも
https://ideone.com/qSuDAt
なるほどジェネレータの処理が“全く同じ問題にぶつか”ってて、
この例ではそこを「ループを抜けた後に同じ処理を追加する」でやってることになるかな
まあでも、泥臭いことをここに押し付けて、メインのループがブロック単位でまわせるのがよい
だいたい、ふだん行単位でまわせるのもライブラリが泥臭いことしてるおかげだし
1行単位で読みつつ複数行単位で処理したいループのあるあるだね
Pythonならイテレータやジェネレータを使うかも
https://ideone.com/qSuDAt
なるほどジェネレータの処理が“全く同じ問題にぶつか”ってて、
この例ではそこを「ループを抜けた後に同じ処理を追加する」でやってることになるかな
まあでも、泥臭いことをここに押し付けて、メインのループがブロック単位でまわせるのがよい
だいたい、ふだん行単位でまわせるのもライブラリが泥臭いことしてるおかげだし
821デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 19:46:26.52ID:8f/9E+Y70822デフォルトの名無しさん (スプッッ Sdff-UdSI)
2024/09/04(水) 20:41:57.33ID:gNKcgXFOd こういうバカに産まれなくてホントに良かったよ
CSVなんかでも最後にカンマあるとかねーとかでうんうん言うんかな
CSVなんかでも最後にカンマあるとかねーとかでうんうん言うんかな
823デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/04(水) 20:59:08.55ID:8f/9E+Y70 セパレータで区切って1行になってたら最後にはセパレータがあってほしくない
文字列を改行で区切って並べるなら、最後にも改行があって欲しい
等価なことをやってる筈なのに、区切りが改行の時だけ例外なんだよな
'\n'.join(l) + '\n'
みたいなことをやる羽目になって、それが正しいんだけど不便
文字列を改行で区切って並べるなら、最後にも改行があって欲しい
等価なことをやってる筈なのに、区切りが改行の時だけ例外なんだよな
'\n'.join(l) + '\n'
みたいなことをやる羽目になって、それが正しいんだけど不便
824デフォルトの名無しさん (ワッチョイ 7f34-lL3G)
2024/09/05(木) 00:04:43.15ID:J+Hr7uF60 汚れ仕事になると分かってるなら
そこだけ分離するな
そこだけ分離するな
825デフォルトの名無しさん (アウアウエー Sa1f-XN8b)
2024/09/05(木) 00:12:14.06ID:/oUqYYg3a >>811
readerにfinalizeを用意させれば良い
readerにfinalizeを用意させれば良い
826デフォルトの名無しさん (アウアウエー Sa1f-XN8b)
2024/09/05(木) 00:14:42.60ID:/oUqYYg3a >>822
range(start, end) で end - 1 までになるのが納得いかないとか言い出しそうだよね
range(start, end) で end - 1 までになるのが納得いかないとか言い出しそうだよね
827デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/05(木) 12:37:32.12ID:yOHjemdL0 これが汚れ仕事になってしまうのは、プログラム的な正しさと人間の正しさの感覚の齟齬があるんだろうな
pascalで行末にセミコロンを付ける
でもこれはセパレータなので、最後の行にも付けるとエラーにされる
ふざけんなということで、Cではセパレータではなく行末記号になった
今度は最後にも付けないとエラー
a = [
aaa,
bbb,
ccc,
]
最後のコンマは要らないけど、あった方が書きやすいし、勝手にヌル要素が追加されたりもしない
無視されるだけ
a = func(a, b, c,)
これも許容される
でも気持ち悪いから、多分こうは書かない
最後の余分なセパレータに対する統一的な方針は無い
pascalで行末にセミコロンを付ける
でもこれはセパレータなので、最後の行にも付けるとエラーにされる
ふざけんなということで、Cではセパレータではなく行末記号になった
今度は最後にも付けないとエラー
a = [
aaa,
bbb,
ccc,
]
最後のコンマは要らないけど、あった方が書きやすいし、勝手にヌル要素が追加されたりもしない
無視されるだけ
a = func(a, b, c,)
これも許容される
でも気持ち悪いから、多分こうは書かない
最後の余分なセパレータに対する統一的な方針は無い
828デフォルトの名無しさん (ワッチョイ ff7c-rxv+)
2024/09/05(木) 13:31:44.17ID:Uxm0hRsL0 >>0823
「最後にもセパレータがある」は矛盾してるよ
最後のセパレータの次には空の要素があるとみなすべき
それぞれの要素の後に記号をつける場合その記号は「ターミネータ」
記号は改行だけとは限らず「foo;bar;baz;」とかでもよい
ターミネータ式では「foo;bar;baz」は厳密には ["foo", "bar"] にゴミがついてるとみなすけど、最後の要素とみなすことも多い。それでも「foo;bar;」で最後に空の要素があるとはみなさないのでセパレータとは違う
splitやjoinはセパレータ式を扱うものだから、ターミネータ式の分割と結合に使うとき小細工が必要なのは仕方ない
>>0823 の「等価な筈なのに〜」だの「セパレータが改行のときだけ」だのも区別がついてない
「ターミネータの場合は」なの
# セパレータをカンマからタブに
csv = "foo,bar,baz"
list = csv.split(",")
tsv = "\t".join(list)
# ターミネータをセミコロンから改行に
stv = "foo;bar;baz;"
list = stv.split(";")[:-1] # 小細工
ltv = "\n".join(ltv) + "\n" # 小細工
「最後にもセパレータがある」は矛盾してるよ
最後のセパレータの次には空の要素があるとみなすべき
それぞれの要素の後に記号をつける場合その記号は「ターミネータ」
記号は改行だけとは限らず「foo;bar;baz;」とかでもよい
ターミネータ式では「foo;bar;baz」は厳密には ["foo", "bar"] にゴミがついてるとみなすけど、最後の要素とみなすことも多い。それでも「foo;bar;」で最後に空の要素があるとはみなさないのでセパレータとは違う
splitやjoinはセパレータ式を扱うものだから、ターミネータ式の分割と結合に使うとき小細工が必要なのは仕方ない
>>0823 の「等価な筈なのに〜」だの「セパレータが改行のときだけ」だのも区別がついてない
「ターミネータの場合は」なの
# セパレータをカンマからタブに
csv = "foo,bar,baz"
list = csv.split(",")
tsv = "\t".join(list)
# ターミネータをセミコロンから改行に
stv = "foo;bar;baz;"
list = stv.split(";")[:-1] # 小細工
ltv = "\n".join(ltv) + "\n" # 小細工
829デフォルトの名無しさん (ワッチョイ 7f34-lL3G)
2024/09/05(木) 14:35:40.58ID:J+Hr7uF60 セパレータなのか終端記号なのかというところに
統一的な見解を作るのは無理だろう
統一的な見解を作るのは無理だろう
830デフォルトの名無しさん (ワッチョイ 2701-Ve+T)
2024/09/05(木) 15:30:26.64ID:gQmEldZ20831デフォルトの名無しさん (アウアウエー Sa1f-XN8b)
2024/09/05(木) 23:28:48.64ID:/+8Jbbe1a832デフォルトの名無しさん (ワッチョイ 5f5c-1cCN)
2024/09/05(木) 23:37:18.89ID:mXpnohHX0 それ終端なのかよURIの記法ってそうだっけパスの頭じゃねーの?
833デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/05(木) 23:37:57.01ID:yOHjemdL0 urlもそうだし、パスを分解する時も、なんだこの不規則はと悩む
C:/
は/が無いと意味不明になる
でも
C:/bin/
C:/bin
はどっちもあり
ファイルとディレクトリを同列に扱いたいというスタンスからすると、末尾の/はあって欲しくない
でもルートの場合は必要
どっちかに統一しないと、
f'{path}/{filename}'
みたいに書けない
仕方ないので、あってもなくてもいいけど、あったら無視する
という汚れ仕事吸収層に任せることに
C:/
は/が無いと意味不明になる
でも
C:/bin/
C:/bin
はどっちもあり
ファイルとディレクトリを同列に扱いたいというスタンスからすると、末尾の/はあって欲しくない
でもルートの場合は必要
どっちかに統一しないと、
f'{path}/{filename}'
みたいに書けない
仕方ないので、あってもなくてもいいけど、あったら無視する
という汚れ仕事吸収層に任せることに
834デフォルトの名無しさん (ワッチョイ 8779-55Je)
2024/09/06(金) 00:52:19.42ID:0I3gstue0 urlといいうか、*nixはスラッシュ止が本来なんだっけ?
それにしてもファイルパスは意外と厄介
rsyncみたいに、スラッシュがあるかないかで振る舞いが全く異なるものもあるし
それにしてもファイルパスは意外と厄介
rsyncみたいに、スラッシュがあるかないかで振る舞いが全く異なるものもあるし
835デフォルトの名無しさん (ワッチョイ 5f56-q2Ob)
2024/09/06(金) 00:54:13.81ID:R0hAYngZ0 最初の/は、ルートではなく絶対パスの意味
長さゼロの文字列はカレントディレクトリかなぁ
ドライブ指定のみ
C:
ドライブ指定+絶対パス指定
C:/
ドライブ指定+相対パス指定
C:.
C:/Users>cd /d D:/
D:/>cd /d C:.///.//yamada///Music//
C:/Users/yamada/Music>
となるし
長さゼロの文字列はカレントディレクトリかなぁ
ドライブ指定のみ
C:
ドライブ指定+絶対パス指定
C:/
ドライブ指定+相対パス指定
C:.
C:/Users>cd /d D:/
D:/>cd /d C:.///.//yamada///Music//
C:/Users/yamada/Music>
となるし
836デフォルトの名無しさん (オイコラミネオ MMcb-rxv+)
2024/09/06(金) 08:29:25.15ID:FtlRyc/CM >>830
820 と 828 にツッコミありがと そのとおりだね
いずれにせよ811や823の参考になればと思ったけれど
833までみるとプログラミングやPythonの勉強よりは別のことをしたいみたいだ
820 と 828 にツッコミありがと そのとおりだね
いずれにせよ811や823の参考になればと思ったけれど
833までみるとプログラミングやPythonの勉強よりは別のことをしたいみたいだ
837デフォルトの名無しさん (スププ Sd7f-8MDM)
2024/09/06(金) 12:59:23.01ID:5V/vqJZed もうメンテナンスしかやることねえ・・
838デフォルトの名無しさん (ワッチョイ 0701-F2Kr)
2024/09/06(金) 13:05:03.70ID:8mJhneNM0839デフォルトの名無しさん (ワッチョイ 278b-k4Tl)
2024/09/06(金) 15:15:22.20ID:kb80ato/0 ほぼ知識ゼロの状態からPythonでアプリを作るのは無謀?
840デフォルトの名無しさん (ワッチョイ 7f34-lL3G)
2024/09/06(金) 16:28:40.66ID:b7WWclpu0 知識ゼロにも色々あってな
プログラミング自体やったことがないのか
Pythonでやったことがないだけなのか
プログラミング自体やったことがないのか
Pythonでやったことがないだけなのか
841デフォルトの名無しさん (スッップ Sd7f-CFO5)
2024/09/06(金) 16:35:05.78ID:e4ITOx4xd PC触ったことないとか
842デフォルトの名無しさん (ワッチョイ 5f87-F2Kr)
2024/09/06(金) 16:43:13.12ID:QtgCCsYf0843デフォルトの名無しさん (ワッチョイ 278b-k4Tl)
2024/09/06(金) 16:43:15.17ID:kb80ato/0 プログラミングの知識はほぼゼロ
unreal engineのC++に何が書いてあるのかわからない
コードの書き方の知識もほぼゼロ
unreal engineのC++に何が書いてあるのかわからない
コードの書き方の知識もほぼゼロ
844デフォルトの名無しさん (ワッチョイ 278b-k4Tl)
2024/09/06(金) 16:44:13.37ID:kb80ato/0 >>842
良い書籍や動画を教えてくれると助かる
良い書籍や動画を教えてくれると助かる
845デフォルトの名無しさん (ワッチョイ 278b-k4Tl)
2024/09/06(金) 16:47:34.80ID:kb80ato/0 組みたいプログラムはオレの知る限り、おそらく一般には採用されてないけど、そんなに複雑なものでもないと思う
なので、信頼してる人しか組みたいプログラムは教えたくない
なので、信頼してる人しか組みたいプログラムは教えたくない
846デフォルトの名無しさん (スッップ Sd7f-CFO5)
2024/09/06(金) 16:52:45.07ID:e4ITOx4xd847デフォルトの名無しさん (ワッチョイ 278b-k4Tl)
2024/09/06(金) 16:56:57.72ID:kb80ato/0848デフォルトの名無しさん (ワッチョイ 278b-k4Tl)
2024/09/06(金) 16:58:56.36ID:kb80ato/0 >>846
どのリストから見れば良い?w
どのリストから見れば良い?w
849デフォルトの名無しさん (ワッチョイ 278b-k4Tl)
2024/09/06(金) 17:01:38.70ID:kb80ato/0 UE使う時にvisual studio入れた
サッパリだったけど…
サッパリだったけど…
850デフォルトの名無しさん (スッップ Sd7f-CFO5)
2024/09/06(金) 17:06:47.23ID:e4ITOx4xd851デフォルトの名無しさん (ワッチョイ 2728-k4Tl)
2024/09/06(金) 17:12:45.49ID:kb80ato/0 >>850
Python落として、visual studioとあと何が必要?
Python落として、visual studioとあと何が必要?
852デフォルトの名無しさん (ワッチョイ 2728-k4Tl)
2024/09/06(金) 17:15:47.84ID:kb80ato/0 ↑で紹介してくれた人、書籍出してるんだな
それも買います
それも買います
853デフォルトの名無しさん (ワッチョイ bf57-a21C)
2024/09/06(金) 18:29:38.57ID:B348q7Ai0 Pythonとvscodeがあればその動画の内容くらいなら十分できるだろう
854デフォルトの名無しさん (ワッチョイ e779-g3wY)
2024/09/06(金) 18:30:39.41ID:060imtVw0 サプー3D前の方が好き
855デフォルトの名無しさん (ワッチョイ 07b7-fene)
2024/09/06(金) 19:19:30.06ID:jTHLjygZ0 >>854
本の表紙がかわいい
本の表紙がかわいい
856デフォルトの名無しさん (ワッチョイ 276a-55Je)
2024/09/06(金) 19:48:13.50ID:PgSZcrVr0 >>844
自分が勉強した順。
PaizaというサイトでPython3に関してはある程度の部分まで無料で学べる。
講座は動画、各項目毎に小テスト。
とりあえずは環境を整えなくてもオンライン上で実行環境が用意されている。
自分はそこで最低限の文法を勉強してから他の動画やネット上のソースを見たりした。
見たソースは、最初のうちは極力ソース内のあちこちに細かく「〇〇する」とか」コメントがあるもの。
そういうものを見て「あー、この部分数行でファイルを読み込むんだ」とか、
「こうやって流れを繋げていくんだ」ってのを理解した。
自分が勉強した順。
PaizaというサイトでPython3に関してはある程度の部分まで無料で学べる。
講座は動画、各項目毎に小テスト。
とりあえずは環境を整えなくてもオンライン上で実行環境が用意されている。
自分はそこで最低限の文法を勉強してから他の動画やネット上のソースを見たりした。
見たソースは、最初のうちは極力ソース内のあちこちに細かく「〇〇する」とか」コメントがあるもの。
そういうものを見て「あー、この部分数行でファイルを読み込むんだ」とか、
「こうやって流れを繋げていくんだ」ってのを理解した。
857デフォルトの名無しさん (ワッチョイ e7f9-g3wY)
2024/09/06(金) 21:20:10.00ID:060imtVw0 >>855
表紙かわいい
表紙かわいい
858デフォルトの名無しさん (ワッチョイ 277a-k4Tl)
2024/09/06(金) 22:41:41.57ID:kb80ato/0 みんなありがとう
色々実践してみます
色々実践してみます
859デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/07(土) 09:57:52.65ID:wncxx9TU0 >>776を作ってみた
取得した結果を入れておく場所と、見つかったかどうかのフラグと、セマフォをglobalで共有する
フラグは本当は呼び出し側で処理したかったけど、result()を得ようとしたら終了待ちするので意味がない
履歴を記録しておくファイルもあって、その都度開いて追記して閉じる
他のスレッドと衝突しないかどうかは運次第
取得した結果を入れておく場所と、見つかったかどうかのフラグと、セマフォをglobalで共有する
フラグは本当は呼び出し側で処理したかったけど、result()を得ようとしたら終了待ちするので意味がない
履歴を記録しておくファイルもあって、その都度開いて追記して閉じる
他のスレッドと衝突しないかどうかは運次第
860デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/07(土) 10:13:06.85ID:frLS0o200 スレッドじゃなく別プロセスでやればええんでは
ライブラリが行うプールの管理だけで済む
ライブラリが行うプールの管理だけで済む
861デフォルトの名無しさん (ワッチョイ 7fdb-8MDM)
2024/09/07(土) 11:35:00.37ID:vd/lqcQo0 それな
おれも普通にプロファイル作ってるわ
ただ1プロファイルにつきたしか600MBくらい使ったけど
おれも普通にプロファイル作ってるわ
ただ1プロファイルにつきたしか600MBくらい使ったけど
862デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/07(土) 12:27:26.22ID:wncxx9TU0 プロセスを別にするのは重い計算とかでCPUコアを分けたい時で、
ネットワークの待ち時間の間に他のことをしたいだけなのでスレッドでいい
ネットワークの待ち時間の間に他のことをしたいだけなのでスレッドでいい
863デフォルトの名無しさん (ワッチョイ c7f0-rxv+)
2024/09/07(土) 13:58:10.84ID:j/xwjrvk0864デフォルトの名無しさん (ワッチョイ 479f-7hP0)
2024/09/07(土) 16:04:12.37ID:frLS0o200 >>862
マイコンやキオスク端末ならわかるけど
デスクトップOSなんてプロセス無数に動いてる
コンテキスト切り替えが多発したりリソース気にするんじゃなけれりゃ
たいしてスレッドにこだわる意味はない
Chromeもプログラム構成優先してがんがんプロセス生成してる
マイコンやキオスク端末ならわかるけど
デスクトップOSなんてプロセス無数に動いてる
コンテキスト切り替えが多発したりリソース気にするんじゃなけれりゃ
たいしてスレッドにこだわる意味はない
Chromeもプログラム構成優先してがんがんプロセス生成してる
865デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/07(土) 16:47:27.15ID:wncxx9TU0 別に拘りは無い
どっちでも同じ
コード上もThreadPoolExecutorをProcessPoolExecutorと書き換えるだけ
実際の中身の処理はかなり変わるけど、どっちにしろ待ち時間が大半なので何も変わらない
processである必要が無いのにprocessにしてあると、なんで???と思われるだけ
どっちでも同じ
コード上もThreadPoolExecutorをProcessPoolExecutorと書き換えるだけ
実際の中身の処理はかなり変わるけど、どっちにしろ待ち時間が大半なので何も変わらない
processである必要が無いのにprocessにしてあると、なんで???と思われるだけ
866デフォルトの名無しさん (ワッチョイ df90-XDF5)
2024/09/07(土) 18:09:51.60ID:Zt7rxXUV0 seleniumは並行に大量のページにアクセスするのには向かない
I/O待ちでもブロッキングするしかなくセッション単位で別のブラウザーインスタンスが必要だからリソース馬鹿喰い
今は代替ツールがあるので新しく書くコードならそっちを使う
I/O待ちでもブロッキングするしかなくセッション単位で別のブラウザーインスタンスが必要だからリソース馬鹿喰い
今は代替ツールがあるので新しく書くコードならそっちを使う
867デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/07(土) 18:49:21.06ID:wncxx9TU0 seleniumは多重処理関係なく重いというか大げさだけどね
本物のブラウザそのものだし
互換品や簡易版で動くようなサイトなら、最初からrequestsで済ませるけど、
本物じゃないと動作が怪しいなら本物を使うしかない
本物のブラウザそのものだし
互換品や簡易版で動くようなサイトなら、最初からrequestsで済ませるけど、
本物じゃないと動作が怪しいなら本物を使うしかない
868デフォルトの名無しさん (ワッチョイ e738-NFcD)
2024/09/07(土) 19:00:23.61ID:zesuODdH0 はやさなら
パンダ<美汁<セレン
パンダ<美汁<セレン
869デフォルトの名無しさん (ワッチョイ e738-NFcD)
2024/09/07(土) 19:01:17.02ID:zesuODdH0 間違った反対
870デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/07(土) 19:14:37.88ID:wncxx9TU0 重いだけで済むんだから楽なもん
perlでmechanizeとか紹介されてて、なんか便利そうだと思って使ってみても、
便利でも何でもない
スクリプトとかあったら人間が解析しないといけない
selenium使ってさえ、取得したpage_sourceがスクリプトの塊で、
謎に分割されてたり、jsonっぽいけどjsonじゃなかったり、
スクレイピング避けのいたちごっこが続いている
perlでmechanizeとか紹介されてて、なんか便利そうだと思って使ってみても、
便利でも何でもない
スクリプトとかあったら人間が解析しないといけない
selenium使ってさえ、取得したpage_sourceがスクリプトの塊で、
謎に分割されてたり、jsonっぽいけどjsonじゃなかったり、
スクレイピング避けのいたちごっこが続いている
871デフォルトの名無しさん (ワッチョイ e738-NFcD)
2024/09/07(土) 19:18:50.68ID:zesuODdH0 デスクトップ上の座標でクリックしてけばいい
872デフォルトの名無しさん (ワッチョイ 87e6-n0L+)
2024/09/07(土) 21:26:28.97ID:o9ae9Qt50 seleniumでウェブの操作を行うプログラムを持っているのですが、おそらくグーグルchromeのアップデートが原因で動かなくなりました
実行後、何も処理せずに落ちてしまうのでエラー内容すら見られません
chromeのバージョンは128.0.6613.120
chromeドライバーのバージョンは128.0.6613.119の32bitです
ドライバーを旧バージョンから最新バージョンに上書きするだけではダメなんですかね?
実行後、何も処理せずに落ちてしまうのでエラー内容すら見られません
chromeのバージョンは128.0.6613.120
chromeドライバーのバージョンは128.0.6613.119の32bitです
ドライバーを旧バージョンから最新バージョンに上書きするだけではダメなんですかね?
873デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/07(土) 21:29:26.91ID:wncxx9TU0 実際に使ってるブラウザとseleniumのドライバを合わせないといけない
みたいな努力は割と前に不要になった
みたいな努力は割と前に不要になった
874デフォルトの名無しさん (ワッチョイ 87e6-n0L+)
2024/09/07(土) 22:06:17.62ID:o9ae9Qt50875デフォルトの名無しさん (ワッチョイ 6754-DWku)
2024/09/07(土) 22:08:24.32ID:wncxx9TU0 from selenium import webdriver
with webdriver.Chrome() as driver:
みたいに書く
with webdriver.Chrome() as driver:
みたいに書く
876デフォルトの名無しさん (ワッチョイ 87e6-n0L+)
2024/09/07(土) 22:22:51.02ID:o9ae9Qt50 >>875
その2行目を付け足したら速攻で落ちるようになりました…
webdriver.Chrome()の()の中に、
エラー画像の4行目のservice=ChromeServiceなんたらかんたらをいれるのかな?とよく分からないながらやってみても変わらず
その2行目を付け足したら速攻で落ちるようになりました…
webdriver.Chrome()の()の中に、
エラー画像の4行目のservice=ChromeServiceなんたらかんたらをいれるのかな?とよく分からないながらやってみても変わらず
877デフォルトの名無しさん (ワッチョイ 2701-C5B1)
2024/09/07(土) 22:28:17.17ID:2iOJWTB70878デフォルトの名無しさん (ワッチョイ 87e6-n0L+)
2024/09/07(土) 22:39:22.70ID:o9ae9Qt50879デフォルトの名無しさん (ワッチョイ e7d4-g3wY)
2024/09/07(土) 23:50:08.25ID:57KCZCA60 >>878
同じバージョンだけど動いてyahoo見れるな…
同じバージョンだけど動いてyahoo見れるな…
880デフォルトの名無しさん (オッペケ Srbd-bQm6)
2024/09/08(日) 03:12:08.34ID:5mVESwIRr >>879
マジですか…
数か月くらい動かしていない期間があって、久しぶりに昨日動かそうとしたらエラーが出て…
WinError 193の対処法として紹介されていた、
service = ChromeService(ChromeDriverManager().install())によって作成されるChrome Driverのキャッシュを消すというものも効果なし
それ以外のエラーはよく分からず
マジですか…
数か月くらい動かしていない期間があって、久しぶりに昨日動かそうとしたらエラーが出て…
WinError 193の対処法として紹介されていた、
service = ChromeService(ChromeDriverManager().install())によって作成されるChrome Driverのキャッシュを消すというものも効果なし
それ以外のエラーはよく分からず
881デフォルトの名無しさん (ワッチョイ f16a-OVBJ)
2024/09/08(日) 09:00:49.72ID:6sSIgrGd0 >>880
その記述って自動で適切なChromeDriverをダウンしてきてくれるみたいだけど、出てるエラーはChromeDriverと合ってないから実行できないよ、っていう事らしい。
自動で上手くいかずキャッシュを消してもダメなら自動を止めて、ChromeDriverの各バージョンを片っ端から手動でダウンして試してエラーの出ないchromedriver.exeをどこかのフォルダに置いといて直接指定すれば良いのでは?と思うけどそれじゃダメなの?
その記述って自動で適切なChromeDriverをダウンしてきてくれるみたいだけど、出てるエラーはChromeDriverと合ってないから実行できないよ、っていう事らしい。
自動で上手くいかずキャッシュを消してもダメなら自動を止めて、ChromeDriverの各バージョンを片っ端から手動でダウンして試してエラーの出ないchromedriver.exeをどこかのフォルダに置いといて直接指定すれば良いのでは?と思うけどそれじゃダメなの?
882デフォルトの名無しさん (ワッチョイ 7501-+J7s)
2024/09/08(日) 11:55:48.02ID:r0meOORq0 >>874
webdriver_managerのバージョンも最新に
webdriver_managerのバージョンも最新に
883デフォルトの名無しさん (ワッチョイ 8956-x2r9)
2024/09/08(日) 16:48:39.72ID:FaHdpY160 それね
俺も先月業務アプリが動かなくて困った記憶あるわ
結論から言うとwebdriver_managerはもういらない
selenium単独で自動的に最新のdriverを取得することができるみたい
```
from selenium import webdriver
options = webdriver.ChromeOptions()
'''オプションがあれば追加'''
options.add_argument('--start-maximized')
driver = webdriver.Chrome(options=options)
try:
driver.get("http://google.co.jp")
except Exception as e:
print(e)
finally:
driver.quit()
```
俺も先月業務アプリが動かなくて困った記憶あるわ
結論から言うとwebdriver_managerはもういらない
selenium単独で自動的に最新のdriverを取得することができるみたい
```
from selenium import webdriver
options = webdriver.ChromeOptions()
'''オプションがあれば追加'''
options.add_argument('--start-maximized')
driver = webdriver.Chrome(options=options)
try:
driver.get("http://google.co.jp")
except Exception as e:
print(e)
finally:
driver.quit()
```
884デフォルトの名無しさん (ワッチョイ 8956-x2r9)
2024/09/08(日) 16:55:04.68ID:FaHdpY160 ちなみにSeleniumバージョン4.6以上が必要らしいので注意ね
ここを参考にするといいよ
https://yuki.world/python-selenium-chromedriver-auto-update/
ここを参考にするといいよ
https://yuki.world/python-selenium-chromedriver-auto-update/
885デフォルトの名無しさん (ワッチョイ 911d-sF61)
2024/09/08(日) 18:21:21.76ID:ZvPXoPz+0 >>839
で色々とアドバイスもらった者です
サプーさんの書籍も購入したんだけど,ある程度、初心者を抜けるか抜けないかの人向けだね、これ
ほんとにプログラミングについては知識ゼロなので、動画以外でこの前段階の超入門書みたいなのでオススメあれば教えていただきたい
で色々とアドバイスもらった者です
サプーさんの書籍も購入したんだけど,ある程度、初心者を抜けるか抜けないかの人向けだね、これ
ほんとにプログラミングについては知識ゼロなので、動画以外でこの前段階の超入門書みたいなのでオススメあれば教えていただきたい
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【🐻ニャー】京都府向日市の「クマ目撃情報」は見間違いか 市が映像確認「ネコに似ていた」 [nita★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★12 [蚤の市★]
- お茶輸出71年ぶり1万トン超 25年、抹茶ブームで急増 [蚤の市★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【広島】ペルー女性の国保加入を誤って認め、福山市が医療費484万円を肩代わりするミス…入院して手術を受ける [ぐれ★]
