在python

时间:2016-11-28 14:55:06

标签: python bash command

我已经使用this回答中的方法尝试将“du -sch *”发送到终端,但是我收到了错误。

例如,当我使用它时:

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]

但是我得到的结果与直接在终端中使用命令的结果不同。

1 个答案:

答案 0 :(得分:0)

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

有关shell argument的更多信息:

  

shell参数(默认为False)指定是否将shell用作要执行的程序。如果shell为True,建议将args作为字符串而不是序列传递。