2014-02-19 35 views
1

請幫助顯示錯誤消息。如何顯示有關錯誤的信息?

def download(path, name): 
    #urllib.URLopener().retrieve(prefix + path, name) 
    img = urllib.request.urlopen(prefix + path).read() 
    try: 
     f = open(name, "wb") 
     f.write(img) 
    except PermissionError: 
     print('PermissionError') 
    except: 
     print(error) 
    finally: 
     f.close() 
在寫入失敗的腳本的情況下

PermissionError

但如果有其他錯誤,我需要顯示有關錯誤的完整信息。不

錯誤

是有可能實現?

回答

2

你可以這樣做:

try: 
    … 
except PermissionError: 
    print('PermissionError') 
except Exception as e: 
    print(e) 

注意,你不應該只是catch all exceptions這樣。特別是對於文件操作,您可以輕鬆選擇OSError作爲嘗試打開文件時可能發生的最常見異常,同時在其中留下其他重要異常。

另外,使用with比手動關閉文件更受歡迎。這也確保文件關閉,無論您是否遇到任何異常:

def download (path, name): 
    img = urllib.request.urlopen(prefix + path).read() 
    try: 
     with open(name, "wb") as f: 
      f.write(img) 
    except PermissionError: 
     print('PermissionError') 
2
def download(path, name): 
    #urllib.URLopener().retrieve(prefix + path, name) 
    img = urllib.request.urlopen(prefix + path).read() 
    try: 
     f = open(name, "wb") 
     f.write(img) 
    except PermissionError: 
     print('PermissionError') 
    except Exception as exc: 
     print(exc) 
    finally: 
     f.close() 

但是,捕獲任何和所有這樣的異常並不是一個好主意; 只有發現您期望的異常。如果真的發生了不好的事情,這些異常應該傳播給用戶,程序真的應該停止在那裏。

事實上,如果你想要更多的failsave文件打開,使用上下文管理器通過with聲明:

with open(name, "wb") as f: 
    <do stuff> 
<done here> 

文件f自動關閉這種方式;不用擔心finally聲明。