如何按每3个一组批量将文件移动到对应文件夹?
实现文件分组移动的解决方案
首先,你原代码里的os.walk会遍历所有子目录的文件,不符合你“同一目录下操作”的需求,建议改为直接筛选当前目录的文件和文件夹,避免误操作子目录内容。
以下是完整实现代码:
import os import shutil # 目标目录路径(注意原代码末尾缺失闭合引号,已修正) base_path = r'C:\.......\est Files' # 1. 筛选当前目录下的文件和文件夹,并排序保证顺序固定 # 只保留当前目录的文件,排除文件夹 files = [f for f in os.listdir(base_path) if os.path.isfile(os.path.join(base_path, f))] files.sort() # 只保留当前目录的文件夹 folders = [d for d in os.listdir(base_path) if os.path.isdir(os.path.join(base_path, d))] folders.sort() # 2. 校验数量是否匹配:60个文件对应20个文件夹,每组3个 if len(files) != 60 or len(folders) != 20: print("文件或文件夹数量不符合要求,请检查") exit() # 3. 按每3个文件一组拆分列表 file_groups = [files[i:i+3] for i in range(0, len(files), 3)] # 4. 遍历配对的文件夹和文件组,执行移动操作 for folder, file_group in zip(folders, file_groups): target_folder = os.path.join(base_path, folder) for file_name in file_group: source_file = os.path.join(base_path, file_name) shutil.move(source_file, target_folder) print(f"已移动 {file_name} 到 {folder}")
关键细节说明:
- 用
os.listdir配合os.path.isfile/os.path.isdir精准筛选当前目录的内容,避免遍历子目录。 - 对文件和文件夹执行
sort(),确保分组顺序和目标文件夹顺序对应(系统默认的列表顺序可能无规律)。 - 用切片语法
files[i:i+3]快速实现每3个文件一组的拆分。 - 通过
zip(folders, file_groups)将每个文件夹和对应文件组配对,逐个完成移动。
内容的提问来源于stack exchange,提问作者MMoazam
相关产品推荐
相关产品推荐

