句柄错误:不是python目录

句柄错误:不是python目录,python,error-handling,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

我得到以下错误:

[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"

有更好的方法处理这个问题吗?

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

但这并不能保护您免受目录权限的侵害,例如(如果这可能是一个问题的话)。在这种情况下,很容易使用
os.access()
来查看是否可以读取该目录,除非它不是那样

因此,尝试读取并捕获特定的
OSError
异常似乎是正确的(最好请求原谅而不是许可),如果目录根本不存在,可以先使用
os.path.isdir()
为用户打印更好的消息


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

dir_2[I][j]和dir_2[I]在不同的地方。这有效吗?你想完成什么?你能再解释一下吗?我只是想打印目录的内容。然后这个循环遇到了一个非目录,出现了这个错误。我只想看到错误没有出现:)我可以添加一个,例如“continue”,这样它在遇到非目录时不会停止吗?