2011-03-09 75 views
0

我正在寫一個python腳本來執行一些基本的CM功能,如在顛覆中標記。檢查我知道如何在python中執行的唯一錯誤是捕獲異常。作爲編寫代碼來測試各種文件和目錄的存在,我得到了所有這些嵌套的try/except塊。如何在沒有嵌套異常的情況下處理python中的文件

try: 
    os.stat("dist") 
    print "mv " + distname + " dist" 
    try: 
    os.remove("dist/"+distname) 
    except: 
    pass 
    shutil.move([distname, "dist"]) 
except: 
    # Code if dist didn't exist before we got here 

有沒有更好的方法來寫這個 - 比如if語句而不是異常塊 - 或者這只是Python的工作方式?我真的很討厭我將邏輯實現爲異常塊。

回答

2

另一種方法是在嘗試對其執行操作之前檢查文件是否存在,這可能有助於消除某些嘗試/除外塊。您可以使用os.path.exists()。 os.path中還有其他一些函數,您可能也會發現它們很有用。這就是說,Python被設計爲在EAFP(易於請求寬恕而不是權限)原則下工作,所以肯定會出現需要捕獲異常的情況。

在另一個說明我也建議反對嘗試/除了沒有限定符的塊,因爲這將捕獲任何類型的異常,而不僅僅是與文件訪問相關的錯誤。

+0

謝謝。這正是我想要的。文檔中有這麼多,我沒有看到exists()。 我不介意捕捉異常的異常,但我反對將它們用作程序正常路徑的邏輯語句。 – 2011-03-09 17:20:25

相關問題