subprocess.call()的返回值是什么?

53

我不确定 subprocess.call() 的返回值意味着什么。

  • 我可以安全地假设零值始终表示命令成功执行了吗?

  • 返回值是否等同于shell命令的退出状态?

例如,以下代码对于Linux上的任何命令都能有效吗?

 cmd = "foo.txt > bar.txt"
 ret = subprocess.call(cmd, shell=True)
 if ret != 0:
     if ret < 0:
         print "Killed by signal", -ret
     else:
         print "Command failed with return code", ret
 else:
     print "SUCCESS!!"

请给我指点 :-)

3个回答

39

1
我得到了returncode=52。无法在任何地方找到其含义。 - Nic Scozzaro
@NicScozzaro,你试过subprocess.getstatusoutput()函数吗? - undefined

14

这是返回代码,但请记住,返回代码的含义取决于子进程的作者。强烈的文化认为0表示成功,但并没有强制要求。


6
你需要调用的命令将决定你的运行效果。考虑以下示例:

test.py

#!/usr/bin/env python
success=False
if not success:
    exit()

如果您运行的代码(cmd='test.py')出现SUCCESS!!的结果,仅仅是因为test.py没有遵循当它不成功时返回非零值的惯例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接