使用os.walk()遍历文件时文件名随机损坏的问题求助
排查与优化你的文件查找代码
首先,我注意到你的代码里有几个容易踩的小坑,先帮你梳理下:
忘记导入依赖模块:你的代码用到了
os和fnmatch,但没有显式导入,这会直接导致运行报错,记得在代码开头加上:import os import fnmatch路径分隔符的兼容性问题:你用
root,"\\", filename来打印路径,这在Windows上没问题,但在Linux/macOS系统下会显示成不规范的格式,建议统一用os.path.join来拼接后打印,保证跨平台兼容:print(os.path.join(root, filename))代码简化优化:你可以用列表推导式来简化
Final_List的生成,让代码更简洁:Final_List = [os.path.join(root, filename) for root, _, files in os.walk(rootPath) for filename in fnmatch.filter(files, pattern)]
如果调试时遇到找不到文件、路径错误这类问题,可以从这几个方向排查:
- 确认
rootPath是正确的相对/绝对路径,你可以先打印os.path.abspath(rootPath)看看实际指向的目录是不是你预期的 - 检查
pattern是否符合fnmatch的匹配规则,比如如果文件名里有特殊字符,可能需要调整匹配模式 - 确认目标文件夹里确实存在带
MATCH的文件,且当前运行代码的用户有访问该文件夹的权限
修正后的完整代码示例:
import os import fnmatch # Define folder and pattern to find rootPath = "./root_folder" pattern = "*MATCH*" # Look for all the files with "MATCH" on its file name Final_List = [] for root, dirs, files in os.walk(rootPath): for filename in fnmatch.filter(files, pattern): full_path = os.path.join(root, filename) Final_List.append(full_path) print(full_path)
内容的提问来源于stack exchange,提问作者juanman
相关产品推荐
相关产品推荐

