subprocess.call()的返回值是什么?
我不太明白 subprocess.call()
的返回值是什么意思。
我可以放心地认为返回值为零就一定表示命令执行成功吗?
这个返回值和在终端中执行命令后的退出状态是一样的吗?
比如,下面这段代码在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 个回答
6
你要听从你调用的命令。想想这个:
test.py
#!/usr/bin/env python
success=False
if not success:
exit()
然后运行你的代码(命令是' test.py')会得到 成功的结果!!
这仅仅是因为 test.py 没有按照规定在不成功的时候返回一个非零的值。
15
这是一个返回代码,但要记住,返回代码的含义取决于子进程的作者。虽然大家通常习惯用0表示成功,但这并不是一个硬性规定。
39
是的,Subprocess.call
会返回“实际的进程返回代码”。
你可以查看官方文档,了解更多关于 Subprocess.call 和 Subprocess.Popen.returncode 的信息。