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

54 投票
3 回答
93511 浏览
提问于 2025-04-15 15:47

我不太明白 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.callSubprocess.Popen.returncode 的信息。

撰写回答