我經常遇到這樣的情況:Python的例外 - 與嘗試...除了條款中循環的功能
import os
for i in range(10):
os.mkdir(i)
然而,有時一個目錄已經存在,在這種情況下os.mkdir拋出OSERROR 。發生這種情況時,我只是希望它跳過循環的剩餘部分,並移動到我的下一個迭代,所以我經常寫這樣的事情:
for i in range(10):
try:
os.mkdir(i)
except OSError:
continue
不過,我真的,真的想要的是一個功能它封裝了這種行爲。事情是這樣的:
def custom_mkdir(directory):
try:
os.mkdir(directory)
except OSError:
continue
所以,我可以有一些像這樣的代碼:
for i in range(10):
custom_mkdir(i)
與預期的行爲,它使目錄,如果它不存在,而是跳到下一互爲作用for循環如果它。
但是,continue語句不能以這種方式包含在函數中。那麼我怎樣才能得到預期的行爲而不訴諸於:
for i in range(10):
try:
custom_mkdir(i)
except OSError:
continue
這是比第一個更糟糕的情況嗎?
沒有幫助來電者決定如何做雖然。 – 2014-08-28 23:52:34
@JoshSmeaton:呼叫者*是否需要*決定要做什麼?在問題中發佈的代碼中,它沒有。 – jwodder 2014-08-28 23:55:41
是的,來電者。這是問題的關鍵。如果「mkdir」失敗,OP希望「繼續」。他們只是想封裝嘗試/除了使循環看起來更整潔。 – 2014-08-28 23:56:34