我正在將應用程式遷移到 python3,但有些遺留系統無法使用 python2 升級。
我有需要更新快取檔案的應用程式,但如果由于某種原因啟動應用程式的用戶無法讀取/更新快取。這沒什么大不了的,他可以再次查詢資料庫而不是使用快取。
因此,我想通過 python2 上的權限被拒絕例外,它是一個 OSError [Errno 13]。在 python3 上我使用 PermissionError 所以沒關系。我假設這個例外只會捕獲 errno 13。
這就是我在 python3 上所擁有的
for filename in os.listdir(cache_dir):
try:
if filename.endswith('.cache'):
os.remove(os.path.join(cache_dir, filename))
Except PermissionError:
pass
Except OSError:
#handle all other errors
我怎樣才能在 python2 上模仿相同的東西,以便只有 Errno 13 是passed而不是其他任何東西?例如,如果權限被拒絕,我可以通過,但如果 fs 是只讀的或磁盤已滿,則不能通過。
uj5u.com熱心網友回復:
那里只有OSError捕獲,但您可以檢查例外中包含的錯誤號。
import errno
for filename in os.listdir(cache_dir):
# Keep the try block as focused as possible.
if not filename.endswith('.cache'):
continue
fname = os.path.join(cache_dir, filename)
try:
os.remove(fname)
except OSError as e:
if e.errno != errno.EACCES:
# handle other errors
使用該errno模塊,因為錯誤編號因作業系統而異。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/406204.html
標籤:
