处理错误:不是目录python

时间:2017-03-10 12:26:01

标签: python error-handling

我收到以下错误:

[Errno 20] Not a directory:

到目前为止我尝试过:

for i in range(3):
    numOfData = len(dir_2[i])
    try:
        for j in range(numOfData):
            print os.listdir(os.path.join(dir_1[i], dir_2[i][j]))
    except OSError:
        print "Hello"

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

当然,您可以在使用os.listdir()运行os.path.isdir()之前检查目录是否存在。

但是,这不会保护您免受目录权限的影响(例如,如果它可能是个问题)。在这种情况下,使用os.access()来查看是否可以阅读目录,除了它不是reliable

之外,很有吸引力

因此,尝试阅读和捕获特定的OSError异常似乎是正确的(更好地请求宽恕而不是权限),如果目录没有&#,可能先用os.path.isdir()为用户打印更好的消息39;根本不存在。

看到你的评论,我意识到你应该将try/except放在循环中,这样如果出现错误,你仍然可以处理下一个目录。 / p>