你是否曾经面对过需要整理成千上万个文件的情况?手动创建文件夹、一个个移动文件不仅耗时,还容易出错。今天,我将向你介绍一个强大的Python脚本,它能自动将大量文件按照指定数量(默认1000个)分类到不同文件夹中,让文件管理变得轻松高效。
为什么需要这个脚本?
在日常工作和生活中,我们经常会遇到以下场景:
- 需要整理数千张手机拍摄的照片
- 要管理大量下载的文档和资料
- 要归档积累多年的工作文件
手动处理这些文件不仅费时费力,还容易造成文件丢失或分类错误。使用自动化脚本可以:
- 节省大量时间和精力
- 保证分类的准确性
- 维持文件组织的一致性
- 减少人为操作错误
脚本实现
下面是完整的Python脚本代码:
import os
import shutil
from pathlib import Path
def sort_images(source_dir, batch_size=1000):
# 获取源目录的Path对象
source_path = Path(source_dir)
# 获取所有图片文件
image_extensions = ('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp')
image_files = [f for f in source_path.glob('*') if f.suffix.lower() in image_extensions]
# 计算需要创建的文件夹数量
total_images = len(image_files)
num_folders = (total_images + batch_size - 1) // batch_size
print(f'处理文件夹:{source_dir}')
print(f'找到 {total_images} 张图片,将分成 {num_folders} 个文件夹')
# 创建文件夹并移动文件
for i in range(num_folders):
# 创建新文件夹
folder_name = f'{i*batch_size+1}-{min((i+1)*batch_size, total_images)}'
new_folder = source_path.parent / f'{source_path.name}_{folder_name}'
new_folder.mkdir(exist_ok=True)
# 移动这一批次的文件
start_idx = i * batch_size
end_idx = min((i + 1) * batch_size, total_images)
for image_file in image_files[start_idx:end_idx]:
shutil.move(str(image_file), str(new_folder / image_file.name))
print(f'已完成文件夹 {folder_name} 的处理,包含 {end_idx-start_idx} 张图片')
print('处理完成!\n')
if __name__ == '__main__':
# 需要处理的文件夹列表
folders_to_process = [
r'D:\需要整理的文件夹1',
r'D:\需要整理的文件夹2'
]
# 依次处理每个文件夹
for folder in folders_to_process:
sort_images(folder)
核心功能解析
1. 智能文件识别
- 默认支持主流图片格式:jpg、jpeg、png、gif、bmp、webp
- 通过修改
image_extensions
变量轻松扩展支持的文件类型 - 自动过滤非目标文件,确保分类准确性
2. 灵活的分组策略
- 默认每1000个文件一个分组
- 通过
batch_size
参数自定义分组大小 - 自动处理文件数量不足一组的情况
3. 清晰的命名规则
- 新文件夹命名:原文件夹名_起始序号-结束序号
- 示例:
照片集_1-1000
、照片集_1001-2000
- 保持原文件名,方便查找和识别
4. 实时进度反馈
- 显示发现的文件总数
- 计算需要创建的文件夹数量
- 实时显示每个文件夹的处理状态
- 提供每个文件夹的实际文件数量
使用指南
1. 环境准备
- 确保已安装Python 3.6或更高版本
- 将脚本保存为
sort_files.py
- 确认Python环境中包含所需的标准库
2. 配置脚本
- 打开脚本文件
- 在
folders_to_process
列表中添加需要处理的文件夹路径 - 根据需要调整
batch_size
参数
3. 执行脚本
- 打开命令提示符或PowerShell
- 进入脚本所在目录
- 运行命令:
python sort_files.py
- 等待处理完成
实际应用示例
假设你有一个文件夹D:\我的照片
,包含2345张照片,运行脚本后:
-
自动创建三个分类文件夹:
我的照片_1-1000
:存放前1000张照片我的照片_1001-2000
:存放接下来的1000张照片我的照片_2001-2345
:存放剩余的345张照片
-
所有照片都会被自动移动到对应的文件夹中,保持原有的文件名不变
安全提示
在使用脚本之前,请注意以下事项:
- 备份重要文件:脚本执行移动操作,建议先备份重要文件
- 检查存储空间:确保目标位置有足够的存储空间
- 验证权限:确认对目标文件夹有读写权限
- 测试小批量:首次使用时建议先用少量文件测试
扩展与优化
1. 支持更多文件类型
# 添加更多文件类型支持
file_extensions = ('.jpg', '.pdf', '.doc', '.txt', '.zip')
2. 自定义分组大小
# 调整每组文件数量
sort_images(source_dir, batch_size=500) # 每500个文件一组
3. 添加文件筛选
# 按文件大小筛选
if image_file.stat().st_size > 1024 * 1024: # 仅处理大于1MB的文件
总结
这个Python脚本为文件管理提供了一个高效的自动化解决方案。它不仅能节省大量时间,还能确保文件整理的准确性和一致性。无论是整理照片、文档还是其他类型的文件,这个脚本都能帮你轻松完成任务。
如果你对脚本有任何改进建议或遇到使用问题,欢迎在评论区留言交流!