python subprocess with failed命令返回码0

时间:2017-07-18 02:34:19

标签: python subprocess

我在windows cmd和ubuntu bash中执行以下代码:

python -c "import xxx"

输出错误消息。当我跑:

echo $? / echo %errorlevel%

值为1.

当我在python脚本中使用子进程执行相同的任务时,如下所示:

cmdlst = ['python', '-c', '“import xxx”‘]
proc = subprocess.Popen(cmdlst)
retcode = proc.wait()

重新编码为0。 有什么问题,如何获得命令的正确返回码 在子流程中运行。

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果我们忽略使用“智能引号”,则运行shell命令(相当于您给定的2*step调用)

subprocess.Popen()

正确退出状态0,无论是否存在名为xxx的模块

这是因为'python' '-c' '"import xxx"' 是一个字符串,并且评估字符串不会引发异常。您将从"import xxx"或任何其他字符串获得完全相同的行为。

如果你真的想尝试执行代码python -c '"hello world"',那么你需要删除额外的引号:

import xxx

...将正确返回subprocess.Popen(['python', '-c', 'import xxx']).wait() (如果不存在1模块)。