如何复制目录结构并仅保留指定扩展名的文件?
仅复制指定格式文件并保留目录结构的解决方案
原代码使用shutil.copytree()会完整复制所有文件和目录,要实现只保留.txt和.bmp文件且维持目录结构,可以通过遍历源目录、创建对应目标目录、筛选指定格式文件复制的方式实现,代码如下:
import os import shutil # 使用原始字符串避免路径转义问题 src = r"S:\ChrisO\source" dest = r"S:\ChrisO\destination" # 遍历源目录的所有层级 for root, dirs, files in os.walk(src): # 计算当前目录在目标路径中的对应位置 target_dir = root.replace(src, dest) # 如果目标目录不存在则创建 if not os.path.exists(target_dir): os.makedirs(target_dir) # 筛选出.txt和.bmp格式的文件 for file in files: if file.endswith(('.txt', '.bmp')): src_file = os.path.join(root, file) dest_file = os.path.join(target_dir, file) # 复制文件到目标目录(保留文件元数据) shutil.copy2(src_file, dest_file)
关键说明:
os.walk()会遍历源目录的所有子层级,确保完整复刻原目录结构- 通过字符串替换生成对应目标目录路径,保证层级一致
- 用
endswith()批量筛选指定格式文件,可按需添加其他扩展名 shutil.copy2()相比基础复制方法,会保留文件修改时间等元数据
内容的提问来源于stack exchange,提问作者Strider90
相关产品推荐
相关产品推荐

