2017-07-18 69 views
0

蟒子我在两个窗口在cmd和Ubuntu bash中执行下面的代码:与失败的命令返回代码0

python -c "import xxx" 

错误消息输出。当我运行:

echo $?/echo %errorlevel% 

值为1

当我在python脚本相同的任务与子流程如下:

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

的RETCODE为0 是什么该问题以及如何获取在子进程中运行的命令 的正确返回码。

在此先感谢。

+0

咦?你在这里使用的“聪明的引号”根本不是有效的语法。 –

+0

(也就是说,'''import xxx'''与''import xxx'''是非常不同的东西,而前者 - 这就是问题中包含的内容 - **不会**退出状态为0)。 –

回答

2

运行shell命令(相当于你给0​​电话不理会使用“智能引号”)

'python' '-c' '"import xxx"' 

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

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


如果你真的想尝试执行的代码import xxx,那么你需要删除多余的报价:

subprocess.Popen(['python', '-c', 'import xxx']).wait() 

...将正常返回1(如果没有xxx模块存在)。

+0

我明白了。谢谢 – yoctold