簡體   English   中英

如何從python中的system()命令捕獲異常

[英]How to catch exception from a system() command in python

我有一個system()命令,我想捕捉它可能產生的異常。 我擁有的代碼是:

def test():

    filename = "test.txt"
    try:
        cmd = "cp /Users/user1/Desktop/Test_Folder/"+filename+" /Users/user1/Desktop/"
        output = system(cmd)
    except:
        print 'In the except'
        traceback.print_exc()
        sys.exit(1)

if __name__ == '__main__':

    test()

當我執行上面的代碼並說我要復制的文件不存在時,便不會捕獲該錯誤,並且代碼不會進入“除外”部分。 如何捕獲由system()命令生成的此類錯誤?

注意:上面的system()命令只是一個示例。 有多個這樣的system()命令,每個命令彼此不同

system()命令不會在失敗時引發異常。 它只會返回應用程序的退出狀態代碼。 如果要在失敗時引發異常,請改用subprocess.check_call (而且,通常,使用子流程模塊是優越的,因為它使您可以更好地控制調用以及重定向子流程的標准輸入/輸出的能力)。

但是請注意,如果您要執行的大多數操作是簡單的文件系統操作(例如將文件從一個位置復制到另一個位置),則有Python函數可以執行相同的操作。 例如, shutil提供了將文件從一個位置復制到另一位置的功能。 在有Python函數可以執行任務的地方,通常最好使用這些函數,而不是調用子進程來完成它(特別是因為Python提供的方法可能能夠更高效地完成此任務而無需分叉進程,而Python版本對於跨平台考慮也將更加健壯)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM