2014年3月5日水曜日

コマンドライン1行でpythonのコマンドを実行する方法

これもたまにしか使わないので、書いておかないとよく忘れてしまいます。

linuxなどの端末(terminal)で、スクリプトファイルを作るまでもない些細なことで、
スクリプトなら簡単にできる処理がしたいとします。
且つ、linuxコマンドだけでは複雑すぎて面倒な処理などに、1行スクリプトが効果を発揮します。

例をお見せします。

python -c 'print "\n".join([ "mv %d %d.jpg" % ( i, i ) for i in range(5) ])'

以前紹介したリスト内包表記を使っています。
これを実行すると下のように出力表示されます。

mv 0 0.jpg
mv 1 1.jpg
mv 2 2.jpg
mv 3 3.jpg
mv 4 4.jpg

こうしてコマンド文字列を生成することができます。
文字列がうまくできていることを確認できたら今度は

python -c 'print "\n".join([ "mv %d %d.jpg" % ( i, i ) for i in range(5) ])' | bash

などとして、bashの標準入力に流し、実際に実行できます。
こうしてpythonの機能を使って、効率よく処理できます。
挙げた例でいうと、順番に番号が付けられたファイルをいっぺんに名前を変更するときなどに便利です。


python を-cというオプションで実行するとそのあとの文字列が実行されます。
細かいことはググればヘルプなども出てきます。
実はこれはpearlやrubyなど他のスクリプト言語でも似たようなことが出来ますが、
pythonは文法が少し違うので、慣れが必要です。




0 件のコメント:

コメントを投稿