2013-10-13 39 views
0

我正在寫一個python程序來自動化某些windows命令,這應該導致創建一個可以在虛擬框中執行的iso文件。Python os.popen返回68864錯誤

有4個命令最後這是 「mkisofs的-no-EMUL引導-boot負荷大小的4 -o filename.iso -b filename.flp cdiso /」

我用os.popen到執行這些命令,我​​發現除了最後一個命令之外的所有東西都能正常工作

從對象返回的所有我可以得到的是68864的狀態碼。我知道它不工作,因爲虛擬框試圖加載iso文件時返回錯誤。

這裏可能會出現什麼問題?

謝謝!

+0

你正在處理哪個操作系統(基本一和虛擬環境)? –

+0

我正在運行WindowS 7.虛擬的是我自己編寫並執行的新OS文件。通常我需要在windows命令提示符下執行4個不同的命令,我試圖自動化。 –

回答

0

IIRC,popen返回的錯誤與system()庫調用相同。要提取實際的錯誤,您必須使用宏WEXITSTATUS

幸運的是,您可以使用此功能作爲os.WEXITSTATUS

>>> import os 
>>> os.WEXITSTATUS(68864) 
13 

我不確定它是什麼意思,它可能會在終止前向控制檯輸出一些錯誤。你嘗試手動運行程序嗎?

一個瘋狂的猜測是,這13號碼實際上是導致失敗的errno。如果是這樣的話,那麼:

>>> os.sterror(13) 
'Permission denied' 
+0

我正在運行Windows,並且WEXITSTATUS似乎無法在Windows上使用。 –

+0

另外我已經手動運行它,它工作正常。我想它是一個問題,是否每個命令行指令都可以像這樣在python中執行。 –

+0

@SachinCNambiar:哦,對,它實際上在'os.posix'中,但在POSIX系統上的'os'中重新導入。在Windows中,應該直接返回進程的退出代碼,但是恐怕你得到了Linux退出代碼轉換(cygwin,mingw或類似的方式)。對不起,但我無法進一步......除了建議您使用卓越的[進程監視器](http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx)。 – rodrigo