遇到未经许可的文件夹时,Python Path.rglob在网络错误上失败

时间:2018-10-20 16:47:18

标签: python glob pathlib

我是Python的新手,一直在使用此站点作为参考...感谢所有事情,我学到了很多东西。第一个问题:

我正在使用Path.rglob()运行基本的递归文件搜索。遇到没有权限访问的文件夹时,我遇到了错误。我在Windows上运行Python 3.7,并连接到网络驱动器上的Windows共享。

这是我的代码:

scan_folder = pathlib.Path("//192.168.1.242/Media")
nfo_files = list(scan_folder.rglob("*.nfo"))

它可以正常工作,直到遇到一个我没有访问权限的文件夹,然后出现以下错误:

Traceback (most recent call last):
  File "D:/Working/media_tools/media_tools/movies_nfo_cataloger.py", line 337, in <module>
    nfo_files = list(scan_folder.rglob("*.nfo"))
  File "C:\Users\ulrick65\Anaconda3\lib\pathlib.py", line 1094, in rglob
    for p in selector.select_from(self):
  File "C:\Users\ulrick65\Anaconda3\lib\pathlib.py", line 544, in _select_from
    for p in successor_select(starting_point, is_dir, exists, scandir):
  File "C:\Users\ulrick65\Anaconda3\lib\pathlib.py", line 507, in _select_from
    entries = list(scandir(parent_path))
OSError: [WinError 59] An unexpected network error occurred: '\\\\192.168.1.242\\Media\\#recycle'

Process finished with exit code 1

我搜索并发现了以下似乎已修复的Pathlib问题,但是在我的情况下,该错误有所不同,因为它指向“意外的网络错误”而不是权限。

https://bugs.python.org/issue24120

我已验证这确实是权限错误,我没有以登录用户身份访问该Recycle文件夹。我编辑了该文件夹的权限,并给自己访问权限,然后代码可以正常运行。

我知道我可以使用oswalk,因为它忽略了这些...但是我认为,鉴于我上面链接到的错误修复,因此path.glob应该没有,另外,使用path.rglob()非常漂亮,只需一行代码,而且速度很快(不是oswalk就不会那么快)。

感谢您的帮助。

0 个答案:

没有答案