我有幾個可能的文件可以容納我的數據;他們可以用不同的方式壓縮,所以要打開它們,我需要使用file()
,gzip.GzipFile()
和其他也返回一個文件對象(支持with
接口)的其他。`嘗試`中有```
我想試試它們中的每一個,直到在開放成功,所以我可以做類似
try:
with gzip.GzipFile(fn + '.gz') as f:
result = process(f)
except (IOError, MaybeSomeGzipExceptions):
try:
with xCompressLib.xCompressFile(fn + '.x') as f:
result = process(f)
except (IOError, MaybeSomeXCompressExceptions):
try:
with file(fn) as f:
result = process(f)
except IOError:
result = "some default value"
這顯然不是萬一我有幾十個可能的壓縮變形是可行的。 (嵌套會變得越來越深,代碼看起來非常相似。)
有沒有更好的方法來說明這一點?
編輯:如果可能,我想有process(f)
出來的嘗試/除了以及以避免意外捕捉process(f)
中引發的異常。
我覺得我比其他人更喜歡那種方法。 – Alfe
不錯。我特別喜歡第二種方法。我會建議讓這兩種方法爲UnknownCompressionFormat拋出異常。 –