Pythonで外部コマンドを呼び出す [Python]

このエントリーをはてなブックマークに追加

質問:

Pythonスクリプトから外部コマンド(UNIXシェルとかWindowsのコマンドプロンプトで入力したみたいに)ってどうやって呼び出せるの?

By freshWoWer | 質問日時: Sep 18 ‘08 at 1:35



回答1:

標準ライブラリのsubprocess モジュールを参照:

from subprocess import call
call(["ls", "-l"])

subprocesssystemと比較して、より柔軟性があることが利点。
(stdout、stderr、 “実際の”ステータスコード、より良いエラー処理、等…)。

公式ドキュメント
subprocessモジュールを代替のos.system()として推奨してる。

subprocessモジュールは、新しいプロセスを産み出して、その結果を処理するため強力な機能を提供する。このモジュールを使用することは、この関数os.system()]を使うのより望ましい。

subprocessドキュメントの「古い関数をsubprocessモジュールで置き換えるの部分はいろいろ役に立つレシピがあるかも。

subprocessモジュールの公式文書は:

By David Cournapeau | 回答日時: Sep 18 ‘08 at 1:39



回答2:

僕なら普通こう書く、

import subprocess
p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()

パイプ内の stdoutデータは自由に使える。実際には、
それらのパラメータ(stdout =stderr =)は省略できるけど。その場合はos.system()のように振る舞う。

By EmmEff | 回答日時: Sep 18 ‘08 at 18:20



Source: Calling an external command in Python

共有 コメント