Python脚本开发求助:按文件名移动Zip文件至对应目录
批量移动Zip文件到对应目录的Python脚本
以下是适配你需求的完整实现脚本,针对给定的文件名规则和目标文件夹映射做了优化:
import os import shutil # 核心配置,按需修改 SOURCE_DIR = "./zip_files" # 替换为存放所有Zip文件的实际路径 IDENTIFIER_MAP = { "CATPICC1": "Markky wool (CATPICC1)", "CATPICC2": "Markky wool (CATPICC2)" } def batch_move_zips(): # 遍历源目录下所有文件 for filename in os.listdir(SOURCE_DIR): if not filename.endswith(".zip"): continue # 按下划线拆分文件名,提取标识字段 name_parts = filename.split("_") if len(name_parts) < 2: print(f"跳过格式异常文件: {filename}") continue identifier = name_parts[1] if identifier not in IDENTIFIER_MAP: print(f"无对应文件夹的标识: {identifier} (文件: {filename})") continue # 构造目标路径并确保文件夹存在 target_folder = os.path.join(SOURCE_DIR, IDENTIFIER_MAP[identifier]) os.makedirs(target_folder, exist_ok=True) # 执行移动操作 source_path = os.path.join(SOURCE_DIR, filename) target_path = os.path.join(target_folder, filename) shutil.move(source_path, target_path) print(f"已移动: {filename} → {IDENTIFIER_MAP[identifier]}") if __name__ == "__main__": batch_move_zips()
关键细节说明
- 配置灵活:修改
SOURCE_DIR指向你的Zip文件目录;后续新增标识和对应文件夹时,直接在IDENTIFIER_MAP字典中添加键值对即可。 - 格式适配:通过
split("_")拆分文件名,精准提取第2段的CATPICC1/CATPICC2标识,完全匹配你的文件名规则。 - 容错处理:自动跳过非Zip文件、格式异常文件,以及无对应文件夹的标识文件,避免批量处理时中断。
- 批量高效:原生遍历+移动逻辑,处理数千个文件性能无压力。
扩展优化(可选)
如果需要处理嵌套子目录中的Zip文件,可将遍历逻辑替换为os.walk:
for root, _, files in os.walk(SOURCE_DIR): for filename in files: if filename.endswith(".zip"): # 后续逻辑不变,仅需更新源文件路径 source_path = os.path.join(root, filename) # ... 其余代码保持一致
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

