2010-12-10 12 views

答えて

34
>>> import subprocess 
>>> cmd = [ 'echo', 'arg1', 'arg2' ] 
>>> output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0] 
>>> print output 
arg1 arg2 

>>> 

サブプロセスの使用にバグがあります.PIPE。巨大な出力の使用このために:彼らは提案として

import subprocess 
import tempfile 

with tempfile.TemporaryFile() as tempf: 
    proc = subprocess.Popen(['echo', 'a', 'b'], stdout=tempf) 
    proc.wait() 
    tempf.seek(0) 
    print tempf.read() 
+0

あなたは私の救世主ですがコマンドを使用することです!私は何日もこのようなものを探していました!ありがとうございました! –

14

代わりにsubprocess moduleを使用してください。

pipe = Popen("pwd", shell=True, stdout=PIPE).stdout 
output = pipe.read() 

Python 2.7では、check_output()機能を使用することもできます。

4

あなたはsubprocessPopenを使用することができます。 recommentされていないos、と

が、それは以下のようなものだ:

import os 
a = os.popen('pwd').readlines() 
+0

これは動作しません。 'Popen'オブジェクトには' readlines() 'メソッドはありません。 –

+0

それを指摘してくれてありがとう、それはos.popenのためだけに働きます – gerry

+3

'os.popen'は' subprocess.Popen'のために推奨されていません。 –

0

最も簡単な方法は、ライブラリが

import commands 
print commands.getstatusoutput('echo "test" | wc') 
+2

コマンドモジュールはどこにありますか? Python3ではpipのようには見えません。 – Shule

関連する問題