Python 中如何复制文件?

Python 复制文件用标准库 shutil:copy() 复制内容和权限,copy2() 额外保留时间戳等元数据,copytree() 递归复制整个目录。本文对比各方法差异。

最佳实践
Python 中如何复制文件?封面

用标准库 shutil 模块:shutil.copy(src, dst) 复制文件;想完整保留修改时间等元数据用 shutil.copy2();复制整个目录树用 shutil.copytree()

复制单个文件

import shutil

shutil.copy('/path/to/source/file', '/path/to/destination')

目标是目录时,文件会以原名复制进去;目标是文件路径时,会覆盖同名文件。

保留元数据:copy2

shutil.copy2('/path/to/source/file', '/path/to/destination')

copy2() 在复制内容之外,还尽量保留权限、修改时间、扩展属性等元数据。做备份时一般用 copy2()

递归复制目录

shutil.copytree('/path/to/source/dir', '/path/to/dest/dir')

注意:目标目录必须不存在,否则抛 FileExistsError(Python 3.8+ 可加 dirs_exist_ok=True 允许合并)。

各函数对比

函数 复制内容 权限位 时间戳等元数据
copyfile()
copy()
copy2()
copytree() 整个目录树

常见问题(FAQ)

Q:复制大文件时内存会不会爆?
A:不会。shutil 内部按固定大小的块流式读写,内存占用恒定。

Q:跨平台路径怎么处理?
A:配合 pathlib.Pathos.path.join() 构造路径,避免手写斜杠。

Q:复制过程中出错能捕获吗?
A:可以,常见异常有 FileNotFoundError(源不存在)、PermissionError(无权限)、shutil.SameFileError(源和目标相同),用 try/except 分别处理。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台