2016-08-23 10 views
2

は、私がここでアスカーは、このようなコードを使用してPythonでのbashを実行すると、特定の問題を抱えているthis questionをお読みください。Pythonでbashコマンドを実行する:osとサブプロセス?

os.system(bashCommand) 

単に上位2つの答えは言う:(代わりにos.systemの)「subprocessを使用」、および与えますクイックコードの例

私の質問は重複していません。

Pythonでbashコマンドを実行する適切な方法とその理由は何ですか?私にとっては、os.systemはこのタイプのもののために設計された良いオプションであり、それは他の質問の質問者がそのパッケージで正しい機能を達成できなかったばかげたことです。しかし、それはsubprocessを使用する "真のPythonの方法"ですか?つまり、os.systemsubprocessの違いは何ですか?

+0

https://stackoverflow.com/questions/89228/calling-an-external-command-in-python?rq=1 – Nabin

答えて

2

サブプロセスは、何が起こっているのかをはるかに制御します。

たとえば、あなたがそのようなあなたのプログラムへのパイプにそれを出力をリダイレクトすることができます

process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) 
out, err = process.communicate() 

python getoutput() equivalent in subprocessからの例)

あなたがsystem()を使用した場合は、入力のリダイレクトを行う必要があるだろう、それをファイルに保存し、そのような奇妙なことを行います。と言われてos.systemhttps://docs.python.org/2/library/os.html#os.system)のドキュメントに


subprocessモジュールは、新しいプロセスを生成し、その結果を取得するためのより強力な機能を提供します。このモジュールを使用する方がこの機能を使用する方が望ましいです。役立つレシピについては、サブプロセスのマニュアルのサブプロセスモジュールセクションで古い関数を置き換えるを参照してください。

関連する問題