Windows下Pathlib.glob扫描exFAT盘遇长路径报错该如何忽略?
结论
仅使用pathlib原生功能可以解决,但要求Python版本≥3.11,低于该版本无法实现。
具体实现方案
你遇到的FileNotFoundError确实是Windows默认260字符路径长度限制导致的,Python 3.11为Path.glob()、Path.rglob()新增了on_error参数,专门用来处理遍历过程中的权限不足、路径无法识别等异常,不需要自行实现目录遍历逻辑。
示例代码
from pathlib import Path # 定义异常处理回调,返回None即可跳过错误项继续遍历 def ignore_scan_error(func): return None def scan_drive(drive_letter): # 路径前加\\?\前缀可直接绕过Windows 260字符路径限制,不需要修改系统配置 drive_path = Path(f"\\\\?\\{drive_letter}:\\") # 传入on_error参数处理异常 for f in drive_path.glob("**/*", on_error=ignore_scan_error): # 业务逻辑 print(f.name) result = scan_drive('E')
低版本Python说明
如果你的Python版本低于3.11,pathlib的glob方法未提供异常处理入口,无法仅通过pathlib本身功能跳过遍历异常,只能自行实现递归遍历逻辑,或者升级Python版本到3.11及以上。
内容的提问来源于stack exchange,提问作者576i
相关产品推荐
相关产品推荐

