os.path.isdir()在无法访问但现有目录

时间:2017-10-10 12:34:41

标签: python unix

假设我有以下目录:

foo/bar/

barchmod 777foo为000。

当我调用os.path.isdir('foo/bar')时,它只返回False,没有任何Permission Denied Exception或其他任何内容,为什么会这样?它不应该返回True吗?

3 个答案:

答案 0 :(得分:3)

如果你不是root,那么你就无法访问foo。因此,您无法检查foo / bar是否存在,并且它返回False,因为它找不到具有该名称的目录(因为它无法访问父目录)。

答案 1 :(得分:2)

os.path.isdir可以返回TrueFalse,但不能引发异常。

因此,如果无法访问目录(因为父目录没有遍历权限),则返回False

如果您想要例外,请尝试使用旨在引发例外情况的os.chdiros.listdir

答案 2 :(得分:1)

您可以实施try/except块:

import os

path = '/foo/bar'

if os.path.exists(path):
    try:
        os.chdir(path)
    except PermissionError:
        print ("Access Denied To:", path)