我不确定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!!"
请赐教: - )
答案 0 :(得分:28)
是的,Subprocess.call
返回“实际流程返回代码”。
答案 1 :(得分:9)
这是返回代码,但请记住,这取决于子进程的作者返回代码的含义。有一种强烈的0文化意味着成功,但没有什么可以强制执行的。
答案 2 :(得分:5)
您将受到所调用命令的支配。 考虑一下:
test.py
#!/usr/bin/env python
success=False
if not success:
exit()
然后运行代码(使用cmd ='test.py')将导致 SUCCESS !!
仅仅是因为test.py不符合在不成功时返回非零值的惯例。