Python新手入门第十篇:批量文件处理教程(数据集重命名、改后缀、筛选文件,适配YOLO)
前言上一篇我们学会了Python单个文件的读写、保存日志、CSV表格操作掌握了基础的数据存储能力。但在实际编程、自动化办公、深度学习YOLO项目中单个文件操作完全不够用。我们做目标检测数据集时经常遇到几百上千张图片、标签文件需要统一改名、改文件后缀、筛选指定格式文件、清理无效文件手动操作耗时还容易出错。本篇手把手教大家掌握Python批量文件处理全部是零基础可跑的代码专门适配YOLO数据集预处理场景学会后彻底告别手动整理数据大幅提升项目效率。一、核心模块介绍无需额外安装批量处理文件全程使用Python内置模块无需pip安装开箱即用os模块遍历文件夹、获取文件列表、修改文件名、判断文件类型字符串语法替换后缀、截取文件名、统一命名格式所有代码兼容Windows系统适配图片、txt标签、xml标签等YOLO常用文件格式。二、基础操作1遍历文件夹所有文件这是批量处理的基础先学会读取文件夹中所有文件名称后续所有批量操作都基于此实现。import os # 目标文件夹路径可替换成自己的数据集路径 file_path ./images # 遍历文件夹内所有文件 file_list os.listdir(file_path) # 打印所有文件名 for file in file_list: print(当前文件, file)运行效果自动读取文件夹下所有图片、标签文件不会遗漏任何文件是数据集批量操作的核心基础。三、基础操作2批量筛选指定格式文件YOLO数据集只需要jpg、png、txt、xml格式文件需要过滤掉文件夹、缓存文件、无效文件精准筛选目标文件。import os file_path ./images # 定义需要保留的文件格式 suffix_list [.jpg, .png, .txt, .xml] for file in os.listdir(file_path): # 获取文件后缀 file_suffix os.path.splitext(file)[-1] # 筛选指定格式文件 if file_suffix in suffix_list: print(有效数据集文件, file)场景用途清理数据集冗余文件只保留训练所需素材避免无效文件干扰数据集标注和训练。四、实战1批量统一重命名YOLO数据集必备新手制作数据集时图片文件名杂乱无章包含中文、特殊符号、乱序编号会导致YOLO训练报错。通过代码可批量统一命名格式规范、有序。import os path ./images # 自定义文件前缀可根据项目修改 prefix hydrogen_detect # 遍历并重命名 for index, file in enumerate(os.listdir(path)): # 获取旧文件完整路径 old_path os.path.join(path, file) # 跳过文件夹只处理文件 if os.path.isdir(old_path): continue # 获取文件后缀保留原格式 suffix os.path.splitext(file)[-1] # 定义新文件名前缀有序编号后缀 new_name f{prefix}_{index}{suffix} new_path os.path.join(path, new_name) # 执行重命名 os.rename(old_path, new_path) print(f重命名成功{file} → {new_name})重命名后效果hydrogen_detect_0.jpg、hydrogen_detect_1.jpg完全适配YOLO数据集命名规范杜绝命名报错。五、实战2批量修改文件后缀数据集常见问题图片格式混杂jpg、png标签格式不统一可通过代码批量统一后缀规整数据集格式。示例批量将png图片转为jpg格式import os path ./images for file in os.listdir(path): old_path os.path.join(path, file) if os.path.isdir(old_path): continue # 批量替换png为jpg if file.endswith(.png): new_name file.replace(.png, .jpg) new_path os.path.join(path, new_name) os.rename(old_path, new_path) print(f格式转换{file} → {new_name})拓展可自行修改后缀参数实现txt转xml、jpeg转jpg等各类格式批量转换。六、实战3批量删除指定后缀文件数据集整理时需要批量删除缓存文件、多余的txt、xml文件手动删除效率极低代码一键清理更高效。import os path ./images for file in os.listdir(path): file_path os.path.join(path, file) # 批量删除 .txt 文件 if file.endswith(.txt): os.remove(file_path) print(已删除无效文件, file)⚠️ 新手注意删除前建议备份文件避免误删有效数据集。七、实战4批量统计数据集数量训练YOLO前需要统计图片、标签总数判断数据集体量是否充足简单代码一键统计import os path ./images img_count 0 for file in os.listdir(path): if file.endswith((.jpg, .png)): img_count 1 print(f数据集图片总数量{img_count} 张)八、新手批量操作避坑指南路径问题尽量使用相对路径文件夹名称不要包含中文、空格、特殊符号备份优先重命名、删除、改后缀前务必备份数据集防止数据丢失区分文件与文件夹操作时需跳过子文件夹避免程序报错统一格式数据集务必统一图片后缀、命名格式可大幅减少YOLO训练报错九、总结本篇核心收获掌握4个刚需批量操作技能遍历文件夹、筛选指定格式文件精准梳理数据集批量统一文件命名解决YOLO命名报错问题批量修改文件后缀规整数据集格式批量清理、统计文件高效完成数据集预处理到这一篇你已经具备了完整的Python数据处理能力基础语法、文件读写、批量数据预处理完全满足YOLO目标检测项目的前期数据准备需求。下一篇将更新第十一篇YOLO数据集制作全程详解标注、划分训练集验证集、生成标签文件正式衔接深度学习实战