Python遍历文件获大小遇[WinError 3]报错,求解决方案
解决方案
使用
os.path.join()规范路径拼接
手动用+ "/" +拼接路径在Windows系统下容易出错:Windows默认路径分隔符是\,且dirpath本身可能已包含结尾分隔符,直接拼接会导致路径格式混乱。os.path.join()会自动适配系统对应的路径分隔符,彻底避免这类问题。添加异常捕获机制
即使路径正确,也可能遇到文件被占用、权限不足或遍历过程中文件被删除的情况。捕获异常能让程序继续执行,同时记录问题文件方便后续排查。
修改后的完整代码:
import os rootdir = "Z:" files = [] sizes = [] for dirpath, dirnames, filenames in os.walk(rootdir): for f in filenames: file_path = os.path.join(dirpath, f) try: file_size = os.path.getsize(file_path) sizes.append(file_size) files.append(file_path) except FileNotFoundError as e: print(f"跳过无法访问的文件: {file_path} | 错误信息: {e}") except PermissionError as e: print(f"无权限访问文件: {file_path} | 错误信息: {e}")
排查特殊文件名
重命名文件后可正常访问,说明原文件名可能包含特殊字符(如空格、Unicode字符、Windows保留字符)。os.path.join()能更好地处理这类文件名的编码与路径拼接,避免手动拼接时的格式问题。可选:提前验证文件存在性
若需要更严谨的检查,可在获取大小前先确认文件是有效文件(应对遍历过程中文件被删除的极端情况):
if os.path.isfile(file_path): # 执行获取大小操作
内容的提问来源于stack exchange,提问作者user026
相关产品推荐
相关产品推荐

