1

我有在 bash 中运行命令的代码(每个 bash 命令都运行一个函数 python 脚本),我希望检查脚本是否成功运行,因为是否有任何错误。这是代码:

    for command in command_list:
        if subprocess_cmd(command):
            print "success"
        else:
            print "fail"

def subprocess_cmd(command):
    process = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
    proc_stdout = process.communicate()[0].strip()  

这总是打印失败,即使一切运行良好,我所做的是否有意义?我该怎么做呢?

编辑:答案是 popen 的 returncode 属性。

4

1 回答 1

1

那是因为你的函数subprocess_cmm没有返回任何东西,所以默认None返回一个Falsy值。

函数的默认返回值总是None

>>> def func():
...     pass
>>> print func()
None

更新:

import shlex
for command in command_list:
   try:
       out = subprocess.check_output(shlex.split(command))
       print out
   except CalledProcessError:
       print "fail"
于 2013-07-12T10:12:30.260 回答