pythonスクリプトでls
またはdf
のようなシェルコマンドの出力を取得したいとします。 commands.getoutput('ls')
は廃止されましたが、subprocess.call('ls')
は私にリターンコードしか渡されません。サブプロセスのgetoutput()と同等です
私はいくつかの簡単な解決策があると思います。
pythonスクリプトでls
またはdf
のようなシェルコマンドの出力を取得したいとします。 commands.getoutput('ls')
は廃止されましたが、subprocess.call('ls')
は私にリターンコードしか渡されません。サブプロセスのgetoutput()と同等です
私はいくつかの簡単な解決策があると思います。
使用subprocess.Popen:プロセスが終了するまでブロックを通信
import subprocess
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE)
out, err = process.communicate()
print(out)
注意。終了する前に出力が必要な場合はprocess.stdout.readline()を使用できます。詳細については、documentationを参照してください。
Python> = 2.7の場合、subprocess.check_output()
を使用してください。
http://docs.python.org/2/library/subprocess.html#subprocess.check_output
技術的には、 'subprocess.check_output(cmd、shell = True)'でなければなりません。 – Cerin
シェルの違いは何ですか? –
私はそれがファイルglobbing、配管などの "シェル特有の機能"を可能にすると思います... –
subprocess'例 'のPythonの2.7バージョンの正しい現在のドキュメントリンクがある:http://docs.python.org/library/subprocess.html#replacing-older-functions-with-the -subprocess-module; Python 3.2の場合はhttp://docs.python.org/py3k/library/subprocess.html#replacing-older-functions-with-the-ubprocess-module –
おそらく、サブプロセスcom.municate()をプロセスに置き換える必要があります。また、process.returncodeを実行してサブプロセスの終了コードが必要な場合があります。 – Cinquo
プロセスの代わりにサブプロセスを記述していることに気付かなかった。一定。 –