处理多个可能文件位置的Pythonic方法?(不使用嵌套的try)

2024-09-25 12:37:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python脚本,需要查找某个文件。你知道吗

我可以用os.path.isa文件(),但我听说这是一个糟糕的Python,所以我尝试捕获异常。你知道吗

不过,我有两个地方可以找到这个文件。我可以使用嵌套的try来处理这个问题:

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')

然而,有没有一个更为Python的方式来处理上述情况?你知道吗

干杯, 维克托


Tags: 文件toconnectnoterrorloggerattry
1条回答
网友
1楼 · 发布于 2024-09-25 12:37:00
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子句;也就是说,只有当循环因耗尽而终止时(没有一个位置是有效的),才会执行一些代码。你知道吗

相关问题 更多 >