我有一个需要查找某个文件的Python脚本。
我可以使用os.path.isafile(),但我听说这是糟糕的Python,所以我试图抓住异常。
但是,有两个地方我可以查找该文件。我可以使用嵌套的trys来处理这个问题:
try:
keyfile = 'location1'
try_to_connect(keyfile)
except IOError:
try:
keyfile = 'location2'
try_to_connect(keyfile)
except:
logger.error('Keyfile not found at either location1 or location2')
或者我可以在第一个除了块之外放一个传递,然后在另一个下面添加一个传递:
try:
keyfile = 'location1'
try_to_connect(keyfile)
except IOError:
pass
try:
keyfile = 'location2'
try_to_connect(keyfile)
except:
logger.error('Keyfile not found at either location1 or location2')
然而,是否有更多的Pythonic方法来处理上述情况?
干杯, 维克多
答案 0 :(得分:10)
for location in locations:
try:
try_to_connect(location)
break
except IOError:
continue
else:
# this else is optional
# executes some code if none of the locations is valid
# for example raise an Error as suggested @eumiro
您还可以在for循环中添加else
子句;这是一些代码只有在循环通过耗尽终止时才会执行(没有一个位置有效)。