Python Pathlib在使用Iterdir()时避免权限错误

时间:2015-01-18 21:16:54

标签: python pathlib

我开始为我编写的一个小程序构建一个“Directory Explorer”GUI,并使用Pathlib,因为我之前没有使用它。不幸的是,我几乎完全陷入困境,迭代遍历根目录,迭代如下:

import pathlib

current=pathlib.WindowsPath('/')
children=[child for child in current.iterdir() if child.is_dir()]
print(children)

导致“PermissionError:[WinError 5]访问被拒绝:'\\ Config.Msi'”

我尝试使用path.stat()来测试权限,然后再尝试确定它是否是一个目录,但它甚至不能让我走得那么远,所以我有点陷入僵局。我不需要我无法获得许可的文件/文件夹,所以如果有人有任何建议,我会非常乐意将它们移除。

提前致谢!

1 个答案:

答案 0 :(得分:1)

因为它easier to ask for forgiveness then to ask for permission, 使用Exceptions。我对pathlib一无所知,但是如果你将代码分开一点,以下内容应该可以正常工作

import pathlib

current=pathlib.WindowsPath('/')
children = []
for child in current.iterdir():
  try:
    if child.is_dir():
      children.append(child)
  except PermissionError:
    pass

print(children)