摘要:本文分享一个用Python编写的自动化工具,可递归扫描数据集目录,统计图片数量并生成文件路径列表。支持.jpg/.png/.bmp
等格式,适用于深度学习数据预处理场景。
一、功能概述
- 核心功能
- 递归遍历文件夹及子文件夹
(基于os.walk
实现深度搜索) - 统计常见图片格式文件数量
(默认支持5种格式,可自定义扩展) - 生成完整图片路径列表
(输出结果可直接用于数据加载器) - 异常路径检测
(自动触发FileNotFoundError
提醒)
- 递归遍历文件夹及子文件夹
二、代码实现
只需修改dataset_path =后的路径
import os
from pathlib import Path
def count_images_in_dataset(dataset_path, image_extensions=['.jpg', '.jpeg', '.png', '.bmp', '.tiff']):
"""
统计数据集中图片的数量。
参数:
dataset_path (str): 数据集根目录路径。
image_extensions (list): 支持的图片文件扩展名列表。
返回:
int: 图片数量。
"""
dataset_path = Path(dataset_path) # 转换为 Path 对象
if not dataset_path.exists():
raise FileNotFoundError(f"数据集路径不存在: {dataset_path}")
image_count = 0
# 递归遍历目录
for root, _, files in os.walk(dataset_path):
for file in files:
if Path(file).suffix.lower() in image_extensions:
image_count += 1
return image_count
if __name__ == '__main__':
# 数据集路径
dataset_path = r"修改这里的路径!!!"
# 统计图片数量
try:
image_count = count_images_in_dataset(dataset_path)
print(f"数据集中的图片数量: {image_count}")
except FileNotFoundError as e:
print(e)
三、代码解析
3.1 关键技术点
-
路径处理
- 使用
pathlib.Path
替代传统字符串拼接
(避免跨平台路径分隔符问题)
- 使用
-
扩展名检测
Path(file).suffix.lower() in image_extensions
(统一转小写,确保大小写不敏感)
-
递归遍历机制
os.walk(dataset_path) # 返回(root,dirs,files)三元组
(自动跳过无权访问的目录)