5

我是 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

我确认这确实是一个权限错误,作为我登录的用户,我无权访问该回收文件夹。我编辑了该文件夹的权限并授予自己访问权限,之后代码运行良好。

我知道我可以使用 oswalk,因为它忽略了这些……但我认为给出了上面链接到的错误修复,path.glob 也应该如此,但它没有。此外,使用 path.rglob() 非常流畅,只需一行代码并且速度很快(并不是说 oswalk 不会那么快)。

任何帮助表示赞赏。

4

0 回答 0