如何将每N个文件批量复制到不同文件夹?Python代码问题求助
解决批量图片分文件夹复制的问题
问题分析
你现有代码的核心逻辑错误:
- 嵌套循环会重复把
image1.png到image4.png复制到Folder1到Folder19,完全不符合按序号区间分配文件夹的需求 - 未覆盖全部20张图片,也没建立图片序号与目标文件夹的对应关系
正确实现方案
我们可以通过计算图片序号对应的目标文件夹,实现按批次分配。以下是适配你需求的代码:
代码实现
import shutil import os # 先创建目标文件夹,避免复制时因文件夹不存在报错 for folder_idx in range(1, 5): folder_path = f"Folder{folder_idx}" if not os.path.exists(folder_path): os.makedirs(folder_path) # 遍历所有20张图片,按规则分配到对应文件夹 for img_idx in range(1, 21): # 计算当前图片归属的文件夹:每5张一组,对应4个文件夹 target_folder = (img_idx - 1) // 5 + 1 source_file = f"image{img_idx}.png" dest_file = f"Folder{target_folder}/image{img_idx}.png" shutil.copyfile(source_file, dest_file)
代码说明
- 预创建文件夹:先循环生成
Folder1到Folder4,确保复制操作能正常执行 - 分组逻辑:
(img_idx - 1) // 5 + 1实现按序号区间分组:- 图片1-5 → 对应
Folder1 - 图片6-10 → 对应
Folder2 - 图片11-15 → 对应
Folder3 - 图片16-20 → 对应
Folder4
- 图片1-5 → 对应
- 批量复制:按计算好的路径,将每张图片复制到对应文件夹中
如果需要按你示例里的「每4张一组」分配(需5个文件夹),只需把代码中的5改为4,同时创建文件夹的循环改为range(1, 6)即可。
内容的提问来源于stack exchange,提问作者Yiğit Kağan Alpaslan
相关产品推荐
相关产品推荐

