コマンドプロンプト(cmd)からpythonファイルを反復実行するのが楽になる.bat


はじめに

こんにちは。地方公立大に通う文系学生のわんこそばです。

この記事では、cmdからpythonを実行するのに、毎回新しく書き直す作業を省く方法を(備忘録的に)紹介しています。
ちなみに今回扱うのは.batことバッチファイルです。

どんな時に有効か

僕の場合は、Chainer Realtime Multi-Person Pose Estimator(以下"CRMPE")というモジュールのうち、pose_detector.pyを中心とした「人が映った画像に対して姿勢推定をし、点と線を描画して保存する」という内容を反復したいと考えていました。
※1_cmd上でのfor文の記述は漸次追加します。
※2_参考にさせていただいたCRMPEの記事はこちら→https://github.com/DeNA/chainer_Realtime_Multi-Person_Pose_Estimation

大学の研究(先生が寛容なので分野が研究室のものから逸脱気味でも背中を押してくださいます)のために大量の画像データに対し同様の処理を複数回行う必要が出てきた、というのがこの記事、と言いますかコーディングの発端となります。

僕のケースのように、エクスプローラー(フォルダなど)の画面から特定のファイルをクリックしただけで単純動作を反復できるようにしたい!という方にバッチファイルは効くはずです。

具体的にはどうしたか


rem this is to apply pose_detector.py to images
call C:\Users\name\anaconda3\Scripts\activate.bat
C:\Users\name\anaconda3\python.exe C:\Users\name\CRMPE\pose_detector.py posenet models/coco_posenet.npz --img data/sth.png
pause
exit

※見づらくてすみません...
①一番上のremはpythonの#同様、コメント的な役割をしています。

②私はpython3がanaconda環境のもと動いてる(確かそう)ので、anaconda3のScriptsにあるバッチファイル「activate.bat」を先に動かしておく必要がありました。anacondaとか特に関係なくただpythonがCドライブ直下に置いてあるだけ、というような方は次の行から初めて頂いても差し支えないかと思われます。

python.exeを記述し、その後に半角スペース(意外と忘れがち)、続いて今回動かしたいpose_detector.pyとその命令の詳細を書いていきます。
気に留めておくべきなのは、このバッチファイルの内容はほとんどきれいそのままcmdに書き写されるということで、この辺りの詳細な部分は予めcmdに書こうと思っていたことをそのまま書いてしまって差し支えありません。
※したがって、今回はCRMPEの出典元様の記事にあったcmdへの命令をそのまま書いています。

pauseと書いておくことで、cmdが結果を出した途端に消えてしまうのを防ぎます(何かしらキー入力するまでcmdを開きっぱなしにできます)。
私の場合は、画像の出力ついでに画像内の点の座標データ(行列)をprintするにあたり、加筆したpythonのコードが機能しているかを確かめたいと思い、pauseを書くことで観察の時間を得ました。

⑤最後にexitでcmdを閉じます。

最後に

細かいデバッグを必要とするプログラムでは、(これはかなり単純かつ簡単なものですが)バッチファイルはある程度の役割を果たしてくれると思います。あと、もっとうまく使えるようになりたいと思いました...(for文とかも書けるそうなので)

(抱負)
研究と就活と院試準備全部頑張ろ。