- 1 名前:デフォルトの名無しさん mailto:sage [2021/11/12(金) 07:48:11.11 ID:vp8lzav70.net]
- !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のソースコードを5ちゃんに直貼はインデントが崩壊するので、 ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止) ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Pythonオフィシャルサイト www.python.org/ ◇まとめwiki ttp://python.rdy.jp/ ●関連スレ● 自称初心者は↓へ 【まず1嫁】くだすれPython(超初心者用) その55 https://mevius.5ch.net/test/read.cgi/tech/1633070807/ 〇前スレ〇 Pythonのお勉強 Part65 https://mevius.5ch.net/test/read.cgi/tech/1621749112/ 次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった) VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
- 331 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 23:06:57.52 ID:+xtv5Wsa0.net]
- Pythonでやるからややこしい
1,2はfind 3,4,5はxargs + sh(cd, mkdir) でできる内容 Pythonでやるのがお題ならごめん
- 332 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 23:16:45.17 ID:fIaDMlsG0.net]
- >>331
バッチでってことですか? FFMPEGがワイルドカード対応してなくて無理でした
- 333 名前:デフォルトの名無しさん [2021/12/06(月) 23:24:01.09 ID:uKiaXwwm0.net]
- シェルの方が早そうだね
- 334 名前:デフォルトの名無しさん [2021/12/06(月) 23:29:51.84 ID:rLSBlzT30.net]
- >>329
>1.ファイルの入ったフォルダをコマンドライン引数1に設定する >2.フォルダ内から特定の拡張子かつ一定以上のファイルサイズのものを抽出する >5.フォルダは4の指定ディレクトリ内にファイル名で新規作成する 2と5の間はとりあえずスキップして、ここだけの実装は可能?
- 335 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 23:31:26.15 ID:fIaDMlsG0.net]
- >>334
2の途中で詰まりました 抽出したファイルの扱い方がわからなく・・・
- 336 名前:デフォルトの名無しさん mailto:sage [2021/12/06(月) 23:49:14.76 ID:R0qeSVmL0.net]
- 配列に入れればいいだけじゃね
- 337 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 00:14:41.57 ID:ebSZa7bB0.net]
- >>332
バッチてことはWin環境なんかな Pythonで解決した後でもいいからPowerShellもしらべてみて 習得にあるていど時間かかるけどやれることが広がるよ あとワイルドカード展開するのはコマンドじゃなくて通常はシェルの仕事
- 338 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 00:34:04.97 ID:P3Md4odo0.net]
- すみませんバッチファイルの本を買って勉強します
ありがとうございました
- 339 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 00:59:42.03 ID:O2KWEQqW0.net]
- 実際問題として、PS使うならPythonで書こうとするかなぁ
他のOSでも使うことができるし とりあえずバッチとwshは使いたくない
- 340 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 01:31:43.51 ID:q8J3SSC40.net]
- find -execかfind xargsが鉄板だと思うけど
外部コマンドのstdout/stderr出力をPython側でキャプチャする必要なければそんなにややこしくもない for path in Path(search_dir).glob(pattern): __if path.stat().st_size > 1000: ____dir_path = Path(output_dir).joinpath(path.stem) ____dir_path.mkdir() ____new_path = dir_path.joinpath(path.name) ____os.system(f'echo "{path}, {dir_path}" > "{new_path}"') (同じファイル名があった場合の対処はしてない)
- 341 名前:デフォルトの名無しさん mailto:age [2021/12/07(火) 01:36:39.28 ID:MjkMHobt0.net]
- winでもwsl2で >331が書いてる手順でヤレる
powershellも覚えれば便利なんだろうけど…
- 342 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 06:51:56.92 ID:BLeYwod+0.net]
- >>329
2.は os.listdirすればリストで返してくれる この辺見てみた? https://note.nkmk.me/python-os-path-getsize/
- 343 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 07:18:25.74 ID:Jl0mhXXA0.net]
- 使うのがffmpegの場合、他にも考えるべきことが大量にあるので、
一括ではうまく行かないんだよな 何が来ても自分好みのファイルに変換する万能スクリプトを一つ書いて、 それに処理するファイル一覧を食わせる方式に落ち着いた
- 344 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 08:57:52.26 ID:BFhf39Z30.net]
- awk,sedが必要になったらシェルスクリプトを諦めて全部Pythonで書くかな。
あれらを今から学習する気力が湧かない。
- 345 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 09:05:21.33 ID:Jl0mhXXA0.net]
- PSはPSでしかできないパワフルなことがあるので、
その部分だけPSでやるのがいい windowsの底の部分を簡単にいじれるのはPSだけ
- 346 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 10:45:42.99 ID:F2U4yKHS0.net]
- 質問するならコード貼ってほしいな
このスレのテンプレにpaste用サイトが書いてある
- 347 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 11:08:12.05 ID:A/pvwvVNr.net]
- PSはlinuxでもosxでも動くし、あれだけで出来ること結構あるから知ってると便利だよな
- 348 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 11:49:17.79 ID:G7aiaFNj0.net]
- ガチでヌーブなんですけどrequestsとbeautifulsoupでスクレイピングやってます
waitかけないとバンされるよと言われましたがどうすればいいですか? requests.get()でtimeoutは今書きましたがforで同じサイトの似たようなページに何度もアクセスするのでサーバーへの負荷はすごいと思います これに対してどうすればいいですか?
- 349 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 12:01:37.39 ID:Jl0mhXXA0.net]
- 適度にsleepする
- 350 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 12:17:07.83 ID:yRaAbrIt0.net]
- 手動でブラウザ操作したときまんまsleepしたらいいだけ
サーバ構築する側はボットなんか勘定にいれてコスト設計してないんだから
- 351 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 12:22:57.09 ID:P3Md4odo0.net]
- >>342
for curDir, dirs, files in os.walk(sys.argv[1]): for file in files: if file.endswith("〇〇"): os.path.getsize(ts) print(os.path.join(file)) これでファイルは取得できるのですがそのファイルを参照する方法がわからず・・・
- 352 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 12:24:12.30 ID:P3Md4odo0.net]
- こうでした
for curDir, dirs, files in os.walk(sys.argv[1]): for file in files: if file.endswith(".〇〇"): print(os.path.join(file))
- 353 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 13:08:03.12 ID:F2U4yKHS0.net]
- 並列数1なら大したことないけどね
応答時間200ミリ秒なら、毎秒最大5リクエストだし
- 354 名前:デフォルトの名無しさん [2021/12/07(火) 13:09:23.97 ID:A/pvwvVNr.net]
- 参照って何をしたいのか知らないけど、ファイル名取得出来てるんだからオープンするのも他のコマンドの引数に与えるのも可能では
- 355 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 13:32:14.96 ID:lMfMxSoR0.net]
- >>352
Ruby では、glob に拡張子も指定できる # 絶対パスのディレクトリ名の後ろに、*.txt を付ける。 # . で始まる、隠し directory, file を除く glob_pattern = "C:/Users/Owner/Documents/**/*.txt" separator = "-" * 30 + "\n" Dir.glob( glob_pattern ) .select { |full_path| File.file?( full_path ) } # ファイルのみ .each do |full_path| puts "#{ separator }#{ full_path }\n#{ separator }" + File.read( full_path ) end
- 356 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 14:32:51.33 ID:Jl0mhXXA0.net]
- できないglobなんか無いだろ
from pathlib import Path p = Path("c:/path") for filename in p.glob("*.mp4"): print(filename)
- 357 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 15:09:33.84 ID:NCVMykAH0.net]
- つかglobを何だと思ってんだガイジは
- 358 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 15:23:50.74 ID:F2U4yKHS0.net]
- スレタイ読めない人がいるな
- 359 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 21:21:55.14 ID:3sCD52Waa.net]
- オワコンのruby薦められても困る
- 360 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 21:40:58.38 ID:Jl0mhXXA0.net]
- rubyとperlとVBとobjective-Cの人は、脱出するのが早いほど幸せになれる
- 361 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 21:43:22.87 ID:P3Md4odo0.net]
- すんげえ苦労したけどなんとか形になりました
バッチなのですれ違いすみません もっと勉強して最適化していきます わかってしまえばすごくシンプル set Tool="Tool" set template="template" for %%f in (%1\*.〇〇) do ( mkdir "%2\%%~nf" %Tool% -i %%f -o "%2\%%~nf\%%~nf.dgi" -a -e del "%2\%%~nf\%%~nf.log )
- 362 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 22:06:22.51 ID:zHaA7V/Y0.net]
- ワロタw
- 363 名前:デフォルトの名無しさん [2021/12/07(火) 22:58:20.49 ID:I8679kEJ0.net]
- 嘘だろ
- 364 名前:デフォルトの名無しさん [2021/12/07(火) 23:00:21.81 ID:oV2OkogX0.net]
- クソワロタ
- 365 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:12:35.70 ID:7GhYBix30.net]
- templateって何?
- 366 名前:デフォルトの名無しさん mailto:sage [2021/12/07(火) 23:44:21.65 ID:F2U4yKHS0.net]
- ポテンシャルを感じる
- 367 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 01:37:02.26 .net]
- from datetime import datetime, timedelta
import pytz dt=datetime.now(pytz.timezone("Asia/Tokyo")) print(dt) print(dt.today())# timezone変更 不適用 print(dt.time())# timezone変更 適用 dt_utc=dt.astimezone(pytz.timezone("UTC")) print(dt_utc) print(dt_utc.today())# print(dt_utc.time())# #2021-12-08 01:34:40.591170+09:00 #2021-12-07 16:34:40.592894 #01:34:40.591170 #2021-12-07 16:34:40.591170+00:00 #2021-12-07 16:34:40.598068 #16:34:40.591170 .today()てtimezone変更引き継いで?くれないんですね・・
- 368 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 02:08:39.64 ID:uCheTDCk0.net]
- Pythonで組みなおしています
デフォルト関数も多そうだし条件分岐とかが簡単そうですが 外部ツール起動に対するオプション調査中です ファイル名を取得してその名前でディレクトリを作成するところまではできました import sys import os import subprocess for i in os.listdir(sys.argv[1]): file, ext = os.path.splitext(i) os.mkdir(sys.argv[2]+file)
- 369 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 07:20:30.37 ID:OmzTkGs60.net]
- >>367
参考になるかも https://qiita.com/shota243/items/91660ece72b5e84c3adb
- 370 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 13:19:52.67 ID:uCheTDCk0.net]
- 外部ツールに抽出ファイルをかけるのが難しいですね
%Tool% -i %%f -o "%2\%%~nf\%%~nf.〇〇〇" -a -e この処理をPythonでどうやるのか? subprocess.runあたりを使うっぽいのですがその後の書き方や処理方法が不透明 ターミナルにパイプして処理する?とかになるなら結局バッチかパワーシェルで 統一した方が早いのでしょうか
- 371 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 13:33:21.38 ID:5HATgl/c0.net]
- 標準出力を取得して、とかやるとそれ用のことを書かないといけないけど、
実行させるだけなら超シンプル subprocessから取得したデータをパイプでffmpegに渡して、 とかやらせてちゃんと動くとちょっと嬉しい
- 372 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 13:43:19.97 ID:lsXABI8+d.net]
- ニコ生のえっちなやつ録画したいニキおつ
- 373 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 15:21:18.60 ID:M4uEosNe0.net]
- >>370
バッチで用が済むなら終わりでいいのでは 汚いスクリプトなんてプログラミングの勉強にならないし
- 374 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 16:12:58.05 ID:5HATgl/c0.net]
- m = re.search('pattern', str)
if m: item = m.group(1) みたいには書けるけど、ifの中にmの取得を一緒に書けない? そうでないと、if elif elseで書けない
- 375 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 16:16:26.00 ID:Z7ccVyDn0.net]
- 昔のpythonでは書けなかったんですが
python3.8からassignment expression := ができるようになりました
- 376 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 16:22:47.75 ID:5HATgl/c0.net]
- おおー、できるのか
でもうちのは3.7だからできないわ 会社のは3.6だからもっとできない 変な互換性のなさを作り込むよりは、3.6でもやれる方法を考えよう
- 377 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 16:31:06.57 ID:cmZgcxZR0.net]
- >>370
各変数を別途取得して、subprocess.runで起動するアプリの引数として与えるだけ 自分で引数をオプションとして与えたいなら、argparseを使う
- 378 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 16:31:50.71 ID:lsXABI8+d.net]
- item = data.get(1)
if item: id(item) #3.8 if item:= data.get(1): id(item)
- 379 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 16:51:20.77 ID:e5XneN8e0.net]
- pythonの野郎宗旨替えしやがったのか
- 380 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 17:00:08.30 ID:cmZgcxZR0.net]
- >>374
スコープの話なら、関数こさえてreturnで拾うという手もあるけど、めんどくさいね
- 381 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 17:02:23.43 ID:5HATgl/c0.net]
- 無駄な処理は増えるけど
m1 = re.〜 m2 = re.〜 としておいてから、 if m1: elif m2: なら書ける 代入が評価もできる仕組みは、書き間違えてバグるからというよりは、 単純に読みにくくなる
- 382 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 17:12:25.01 ID:+2BbFlMUa.net]
- Pythonのifのスコープは脳に優しくないな
- 383 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 17:22:50.60 ID:aaXV5Kk80.net]
- プライベートだと思っていた彼女のホールがグローバルだった
- 384 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 19:30:48.14 ID:5HATgl/c0.net]
- 入力行をsplitして取り込む
arg1, arg2, arg3 = line.split('\t') みたいな感じ でも、入力がちゃんとしてなくて数が多くても少なくてもエラーになる そこはよしなにやって欲しい 足りない部分はNoneで埋めて、余った分は捨てていい というええかげんなことをしようと思ったら、ええかげん関数を作るしかないのかな
- 385 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 19:35:03.01 ID:lsXABI8+d.net]
- hash = {'ぐれ':1, 'ぷ':2}
matched = m.group(1) if not hash.get(matched): print('i want to write else case') elif hash[matched]== 1: print('do 1 case') ???
- 386 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 21:14:52.99 ID:/jR8/f4s0.net]
- >>384
arg1, arg2, arg3, *_ = line.split('¥t') + [None, None]
- 387 名前:デフォルトの名無しさん mailto:sage [2021/12/08(水) 23:31:45.91 ID:5HATgl/c0.net]
- + でいいんだな
- 388 名前:デフォルトの名無しさん [2021/12/09(木) 02:15:13.68 ID:WjLFVkiy0.net]
- すみません、質問なのですが、
newline= ってpython3じゃないと使えないのですか?
- 389 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 02:26:38.04 ID:y+vTbIG00.net]
- 調べてから質問してる?
- 390 名前:デフォルトの名無しさん [2021/12/09(木) 02:29:06.32 ID:WjLFVkiy0.net]
- してる
- 391 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 05:36:26.42 .net]
- "newline= を使う"ってなに?
文字列の中に改行コードは使えるか って意味じゃないよね それだとそっこーぐぐったら出てくるし。 なんかのライブラリやらフレームワーク的な話なのだろうか
- 392 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 05:39:43.24 .net]
- あるいはクロスプラットフォームでのCRLFかLFかみたいな話かな
- 393 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 06:51:10.51 ID:7v43kIFS0.net]
- openのオプションでしょ
- 394 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 08:02:22.78 ID:I94H5Ioy.net]
- >>388
python3.8.1 https://techiedelight.com/compiler/?MQK2 python2.7.17 https://techiedelight.com/compiler/?lKam
- 395 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 08:48:12.08 ID:zIpIn5ri0.net]
- beautifulsoupでattributeerror: nonetype nas no attribute stringが発生するんだけどnoneになることが想定される場合は一々いっこっこifでかこってやらないとだめなの?
- 396 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 08:56:56.15 ID:zIpIn5ri0.net]
- ifっていうかtryか
- 397 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 08:59:10.31 ID:7v43kIFS0.net]
- 最大限何でも見つかるようにしとくから、緩めるのはユーザ側でやってね
という姿勢は間違ってないんだけどな 元から緩かったら厳しくしようがない
- 398 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 09:52:10.18 ID:q+Lg0FmZ0.net]
- 自分の管理できないデータを拾おうとする場合は
例外処理は必須だと思う
- 399 名前:デフォルトの名無しさん [2021/12/09(木) 10:42:48.76 ID:WjLFVkiy0.net]
- >>394
ありがとうございます!!!
- 400 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 11:32:41.22 ID:LJEXrIakM.net]
- >>395
ifかor Pythonにはsafe navigation operatorがないからスクレイピングコードは煩雑になりがち https://en.wikipedia.org/wiki/Safe_navigation_operator 要素がなければ空文字のようなデフォルト値を返す汎用的関数を自分で用意すると少し読みやすくなる
- 401 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 11:51:24.51 ID:q+Lg0FmZ0.net]
- JSONなんかだと、get()で拾えばまぁ困らんな
- 402 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 11:58:39.98 ID:LJEXrIakM.net]
- BeautifulSoupじゃなくてScrapyなら少しマシ
公式ドキュメントの質は段違い
- 403 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 12:37:45.04 ID:LJEXrIakM.net]
- >>401
指定した要素がない状況を考慮する必要があれば階層ごとに自分でハンドリングが必要だからgetだけじゃダメなんだよね safe navigation operatorがあればlodashのgetやrubyのdigのようなのが簡単に作れる 近いところでglomがあるけど処理を分割したり、つなげたりできないから使い勝手が悪い
- 404 名前:デフォルトの名無しさん mailto:sage [2021/12/09(木) 14:43:48.67 ID:kmW2UpC80.net]
- bsのドキュメントってなんであんな書き方なんかな
|

|