假设我有以下目录:
foo/bar/
bar
为chmod 777
,foo
为000。
当我调用os.path.isdir('foo/bar')
时,它只返回False,没有任何Permission Denied Exception或其他任何内容,为什么会这样?它不应该返回True吗?
答案 0 :(得分:3)
如果你不是root,那么你就无法访问foo。因此,您无法检查foo / bar是否存在,并且它返回False,因为它找不到具有该名称的目录(因为它无法访问父目录)。
答案 1 :(得分:2)
os.path.isdir
可以返回True
或False
,但不能引发异常。
因此,如果无法访问目录(因为父目录没有遍历权限),则返回False
。
如果您想要例外,请尝试使用旨在引发例外情况的os.chdir
或os.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)