【发布时间】:2014-08-28 23:46:29
【问题描述】:
我经常遇到这样的情况:
import os
for i in range(10):
os.mkdir(i)
但是,有时目录已经存在,在这种情况下 os.mkdir 会抛出 OSError。发生这种情况时,我只想让它跳过循环的其余部分并移动到 i 的下一次迭代,所以我经常这样写:
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
哪种情况比第一种情况更糟?
【问题讨论】: