如何在Python中实现Windows系统下文件夹内容的完整复制?
Windows系统下Python实现文件夹全内容复制
解决方案说明
用Python标准库os和shutil就能实现,无需额外安装依赖,可在任意Windows系统运行,支持复制所有文件(含隐藏文件)、子文件夹及文件元数据。
代码实现
import os import shutil def copy_all_contents(src_folder, dest_folder): # 确保目标文件夹存在,不存在则自动创建 os.makedirs(dest_folder, exist_ok=True) # 遍历源文件夹内的所有文件和子文件夹 for item in os.listdir(src_folder): src_path = os.path.join(src_folder, item) dest_path = os.path.join(dest_folder, item) try: if os.path.isdir(src_path): # 递归复制子文件夹,已存在则合并内容 shutil.copytree(src_path, dest_path, dirs_exist_ok=True) else: # 复制单个文件,保留元数据,覆盖同名文件 shutil.copy2(src_path, dest_path) except Exception as e: print(f"复制 {src_path} 失败: {str(e)}") # 示例调用 if __name__ == "__main__": # 替换为实际的源文件夹和目标文件夹路径 source_dir = r"C:\Example\Source" target_dir = r"C:\Example\Destination" copy_all_contents(source_dir, target_dir) print("内容复制完成")
关键细节说明
- 路径处理:用原始字符串(
r"路径")避免Windows路径中的反斜杠转义问题 - 目标文件夹创建:
os.makedirs(..., exist_ok=True)确保目标文件夹存在,不会因已存在报错 - 文件夹复制:
shutil.copytree的dirs_exist_ok=True参数(Python 3.8+支持)允许合并已存在的子文件夹内容 - 文件复制:
shutil.copy2会保留文件的创建时间、修改时间等元数据,比基础的shutil.copy更完整 - 异常处理:捕获复制过程中的权限不足、文件占用等错误,保证程序稳定运行
可选调整
如果需要跳过已存在的文件/文件夹,可在复制前添加判断:
if os.path.exists(dest_path): print(f"{dest_path} 已存在,跳过") continue
内容的提问来源于stack exchange,提问作者Md Ashraful Islam Rahat
相关产品推荐
相关产品推荐

