2011-04-02 33 views
3

在python中,如何判斷某個system()調用是否成功?在我正在編寫的程序中,我需要知道一個java程序是否使用javac正確編譯,這是使用system()(在python程序中)調用的。所以我需要知道javac是否拋出任何異常,如果java程序有任何語法問題,那麼在java程序編譯時就會出現任何問題。本質上,程序要求用戶輸入dir,然後詢問java程序名稱,然後詢問是否接受任何參數,然後用system('javac'+ str(javaFile)+'.java')編譯它。如何知道如果javac在python中乾淨地使用system()編譯

+0

這是一個驚人的天真的方法。使用'subprocess',因爲它會給你任何輸出和退出代碼,也不會在例如如果使用了適當的空格(即用'['javac','--some-opt',javafile +'。java']'作爲命令'), – delnan 2011-04-02 18:07:46

回答

4

您需要使用subprocess模塊,os.system已被棄用。

0的退出碼錶示成功終止,非零退出碼錶示發生錯誤。

有許多方便的功能,讓我們的subprocess.call

>>> subprocess.call(['ls', '-a']) 
0 

成功的例子,如ls用正確的參數調用。

現在讓我們嘗試:

>>> subprocess.call(['ls', '-T']) # option -T requires an argument 
2 

無效的參數和返回2。如果javac編譯成功,則應返回0。否則,會引發錯誤。這取決於調用subprocess模塊的哪個功能。

相關問題