2017-07-18 55 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