我是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就不会那么快)。
感谢您的帮助。