Python使用shutil复制指定列表文件夹异常问题求助
问题解决:指定文件夹完整复制到目标目录
核心问题分析
原代码存在两个关键问题:
- 匹配逻辑错误:通过路径结尾判断文件夹编号,会误匹配名称包含目标编号的文件夹(如
test19116会被错误识别) - 复制路径错误:直接将源文件夹内容复制到目标根目录,而非创建对应文件夹后完整复制
修正后的代码
import os import shutil source_dir = input_folder_shp dest_dir = folder_kgs # 提前将编号转为字符串,避免循环内重复转换 target_folder_names = [str(num) for num in kg_code_list] for folder_name in os.listdir(source_dir): source_path = os.path.join(source_dir, folder_name) # 仅处理目录,且名称完全匹配目标列表 if os.path.isdir(source_path) and folder_name in target_folder_names: # 构造目标路径,确保完整复制整个文件夹 target_path = os.path.join(dest_dir, folder_name) shutil.copytree(source_path, target_path, dirs_exist_ok=True)
关键修正说明
- 提前将目标编号列表转为字符串,优化循环内操作效率
- 直接判断文件夹名称是否属于目标列表,避免误匹配
- 目标路径包含源文件夹名称,确保整个文件夹被复制到目标目录下,而非仅复制内部文件
内容的提问来源于stack exchange,提问作者Saelon
相关产品推荐
相关产品推荐

