2016-11-28 20 views
0

私はthisの方法で "du -sch *"を端末に送信しようとしましたが、エラーが出ます。例えばPythonのbash端末へのコマンド

、私はこれを使用します。

out = check_output(["du", "-sch", "*"]) 

は私が取得:

Traceback (most recent call last): 
    File "test_main.py", line 29, in test_sample 
    out = check_output(["du", "-sch", "*"]) 
    File "/usr/local/lib/python2.7/subprocess.py", line 575, in check_output 
    raise CalledProcessError(retcode, cmd, output=output) 
CalledProcessError: Command '['du', '-sch', '*']' returned non-zero exit status 1 

私が手の問題は、 "*" なぜならそれなしで、それが正常に動作によるものです。

私も試してみた:

output = subprocess.Popen(["du", "-sch", "*"], stdout=subprocess.PIPE, shell=True).communicate()[0] 
をしかし、私は、端末に直接コマンドを使用して取得するものとは異なる結果が得られます。 shell argumentについて

答えて

0
from subprocess import check_output 
out = check_output("du -sch *", shell=True) 

詳細:実行するプログラムとして、シェルを使用するかどうかを指定します(デフォルトはfalse)

シェル引数。 shellがTrueの場合、argsをシーケンスではなく文字列として渡すことをお勧めします。

+0

または推奨される配列の代わりに刺すにだけ使用します。 subprocess.check_output([ "デュ-SCH *"]、シェル= '/ binに/ bashの') –

関連する問題