【问题标题】:Command to bash terminal in python在python中bash终端的命令
【发布时间】:2017-04-12 08:21:00
【问题描述】:

我已使用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]

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

【问题讨论】:

    标签: python bash command


    【解决方案1】:
    from subprocess import check_output
    out = check_output("du -sch *", shell=True)
    

    更多关于shell argument

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

    【讨论】:

    • 或者只使用 sting 而不是推荐的序列:subprocess.check_output(["du -sch *"], shell='/bin/bash')
    猜你喜欢
    • 1970-01-01
    • 2016-04-11
    • 2012-03-29
    • 2021-06-04
    • 2011-10-31
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多