我已经使用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]
但是我得到的结果与直接在终端中使用命令的结果不同。
答案 0 :(得分:0)
from subprocess import check_output
out = check_output("du -sch *", shell=True)
有关shell argument的更多信息:
shell参数(默认为False)指定是否将shell用作要执行的程序。如果shell为True,建议将args作为字符串而不是序列传递。