我在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。 有什么问题,如何获得命令的正确返回码 在子流程中运行。
提前致谢。
答案 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
模块)。