Python如何遍历根目录下多子文件夹的图片并按文件夹分类存储为字典
修正后实现代码
import os dict_object = {} # 定义需要过滤的无效目录/文件名 exclude_names = {'.DS_Store', '.ipynb_checkpoints', '.'} # 如果需要仅统计指定格式图片,可以打开下方注释的配置 # img_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'} for root, dirs, files in os.walk(".", topdown=True): # 提取当前遍历的目录名称 current_dir = os.path.basename(root) # 跳过无效目录 if current_dir in exclude_names: continue # 过滤有效文件 valid_files = [] for file_name in files: if file_name in exclude_names: continue # 如果需要仅保留图片,打开下方两行注释即可 # if os.path.splitext(file_name)[1].lower() not in img_extensions: # continue valid_files.append(file_name) # 写入字典 dict_object[current_dir] = valid_files
原代码问题说明
- 逻辑嵌套错误:原代码把文件遍历和目录遍历做了嵌套,会出现「每个文件都给所有同级目录赋值为当前文件名」的逻辑错误,且每次赋值都用
[file_name]覆盖原有列表,最终只能保留最后一个遍历到的文件名 - 未做无效内容过滤:没有过滤Mac系统生成的
.DS_Store文件、Jupyter的缓存目录.ipynb_checkpoints以及根目录.,导致生成大量无效条目 os.walk参数不合理:topdown=False是从最深层目录开始遍历,不符合从上层目录开始统计的需求,改成topdown=True逻辑更清晰
内容的提问来源于stack exchange,提问作者Amir Charkhi
相关产品推荐
相关产品推荐

