如何让Python每次稳定移动12个txt文件至新文件夹(代码问题)
解决每次稳定移动12个.txt文件的问题
原代码的核心问题是先取目录前12个条目(可能包含文件夹)再筛选txt,导致实际移动数量不稳定。要实现每次稳定移动12个txt文件,得先把所有符合条件的txt文件筛选出来,再分批处理,完全避开文件夹的干扰。
完整实现代码
import os import shutil # 替换成你的目标目录路径 target_dir = "/path/to/your/directory" # 1. 先筛选出目录下所有的.txt文件(自动排除文件夹) all_txt_files = [ filename for filename in os.listdir(target_dir) if os.path.isfile(os.path.join(target_dir, filename)) and filename.endswith(".txt") ] # 2. 按每12个为一批,循环处理 batch_size = 12 for batch_idx in range(0, len(all_txt_files), batch_size): # 取出当前批次的12个(或剩余不足12个的)txt文件 current_batch = all_txt_files[batch_idx : batch_idx + batch_size] # 创建批次文件夹,命名为batch_1、batch_2... batch_folder = os.path.join(target_dir, f"batch_{batch_idx // batch_size + 1}") # 确保文件夹存在,已存在也不会报错 os.makedirs(batch_folder, exist_ok=True) # 移动当前批次的所有文件到新文件夹 for file in current_batch: src = os.path.join(target_dir, file) dest = os.path.join(batch_folder, file) shutil.move(src, dest)
关键逻辑说明
- 先筛选后分批:通过列表推导式直接过滤出所有txt文件,彻底排除文件夹的影响,保证后续处理的都是符合要求的文件。
- 稳定分批:用
range的步长参数实现每12个文件为一批,即使最后一批不足12个也能正常处理。 - 容错文件夹创建:
exist_ok=True参数避免重复运行时因文件夹已存在报错。 - 路径安全:所有操作都拼接完整路径,避免因相对路径导致的文件找不到问题。
不管目录后续新增多少文件夹,只要运行这段代码,都会自动跳过文件夹,只处理txt文件,每次稳定移动12个(最后一批除外)。
内容的提问来源于stack exchange,提问作者w j
相关产品推荐
相关产品推荐

