可以说让我有这样的目录:os.path.isdir()返回不可访问假的,但现有的目录
foo/bar/
bar
是chmod 777
和foo
为000
当我打电话os.path.isdir('foo/bar')
它只返回False,没有任何Permission Denied Exception或其他任何东西,为什么会这样?它不应该返回True吗?
可以说让我有这样的目录:os.path.isdir()返回不可访问假的,但现有的目录
foo/bar/
bar
是chmod 777
和foo
为000
当我打电话os.path.isdir('foo/bar')
它只返回False,没有任何Permission Denied Exception或其他任何东西,为什么会这样?它不应该返回True吗?
如果你不是root,那么你不能访问foo。因此,您不能检查foo/bar是否存在,并且它返回False,因为它无法找到具有该名称的目录(因为它无法访问父目录)。
对不起,我忘了接受 – Ginko
os.path.isdir
可以返回True
或False
,但不能引发异常。
因此,如果无法访问目录(因为父目录没有遍历权限),它将返回False
。
如果您想要例外,请尝试使用旨在引发异常的os.chdir
或os.listdir
。
你可以实现一个try/except
块:
import os
path = '/foo/bar'
if os.path.exists(path):
try:
os.chdir(path)
except PermissionError:
print ("Access Denied To:", path)
你能接受我的答案,如果它帮助你的?谢谢。 – mrCarnivore