Python 对于不可访问但存在的目录,os.path.isdir()返回false

Python 对于不可访问但存在的目录,os.path.isdir()返回false,python,unix,Python,Unix,假设我有如下目录: foo/bar/ bar是chmod 777和foo是000 当我调用os.path.isdir('foo/bar')时,它只返回False,没有任何被拒绝的权限异常或任何东西,为什么会这样?它不应该返回True吗?os.path.isdir可以返回True或False,但不能引发异常 因此,如果无法访问目录(因为父目录没有遍历权限),它将返回False 如果需要异常,请尝试使用设计用于引发异常的os.chdir或os.listdir。如果您不是root用户,则无法访问foo

假设我有如下目录:

foo/bar/

bar
chmod 777
foo
是000


当我调用
os.path.isdir('foo/bar')
时,它只返回False,没有任何被拒绝的权限异常或任何东西,为什么会这样?它不应该返回True吗?

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

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


如果需要异常,请尝试使用设计用于引发异常的
os.chdir
os.listdir

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

您可以实现
try/except
块:

import os

path = '/foo/bar'

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

如果我的回答对你有帮助,你能接受吗?谢谢