Python 检查脚本是否成功运行?

Python 检查脚本是否成功运行?,python,return-value,Python,Return Value,我有在bash中运行命令的代码(每个bash命令都运行一个函数python脚本),我希望检查脚本是否成功运行,比如是否有任何错误。代码如下: for command in command_list: if subprocess_cmd(command): print "success" else: print "fail" def subprocess_cmd(command): process =

我有在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属性。

这是因为您的函数
子流程\u cmm
没有返回任何内容,因此默认情况下
返回,这是一个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"

这是因为您的函数
subprocess\u 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"

谢谢,如何测试bash命令调用的python脚本的返回值?@Paul如果您只需要输出,请使用
子流程。检查\u output
。我只想检查它是否成功,基本上是是否为0。我将看一看subprocess命令,谢谢,现在我知道该做什么了。@Paul使用
subprocess.call
,它返回一个0或非零值,这取决于调用是否有效。@Paul因为您在这里使用的是
str.split
,它不适用于shell命令,请看区别:谢谢,如何测试bash命令调用的python脚本的返回值?@Paul如果只需要输出,请使用
子流程。检查\u output
。我只想检查它是否成功,基本上是否为0。我将看一看subprocess命令,谢谢,现在我知道该做什么了。@Paul使用
subprocess.call
,它返回一个0或非零值,这取决于调用是否有效。@Paul因为您在这里使用的是
str.split
,它不适用于shell命令,请查看区别: