コマンドをPythonから入力するやり方.
基本
ls -l
こんなコマンドは以下の二通り.
import subprocess subprocess.call("ls -l",shell=True)
とても単純.シェルを介してコマンドを実行している.
もう一つはシェルを介さない場合.
import subprocess subprocess.call(["ls","-l"])
リダイレクトとパイプ
以上のようにリダイレクトやパイプも使えるが,出力を使いたい時に困る.
そこでそれらの使い方を紹介.
例えばテキストファイルをMeCabという形態素解析にかけたいとき
mecab < test.txt
このようなコマンドを入力するが実際は下のように直して入力している.
cat test.txt | mecab
ではsubprocess
import subprocess import sys file = sys.argv[1] cat = subprocess.Popen(["cat",file], stdout=subprocess.PIPE) mecab = subprocess.Popen("mecab",shell=True, stdin=cat.stdout,stdout=subprocess.PIPE) output = mecab.stdout for line in output: print line,
今回はリダイレクトに関して書いた.
パイプについても全く同じである.
それについてはsubprocess – プロセスを生成して連携する - Python Module of the Weekを参照して欲しい.