Python 复制文件:shutil.copy() 与 shutil.copystat() 实战
Python 文件复制基础
Python shutil 模块提供直观的文件复制和元数据保留函数。两个主要工具是 shutil.copy() 和 shutil.copystat()。
copy(src, dst)
将位于 src 的文件复制到目标 dst。复制文件内容,但不保留文件权限和时间戳。
copystat(src, dst)
将文件元数据——包括权限、时间戳和其他 OS 特定属性——从 src 复制到 dst。必须在成功 copy() 后调用,以复制完整文件状态。
分步示例
- 定位源文件
确认guru99.txt存在于当前工作目录并获取其绝对路径。

import os
from os import path
src_path = path.realpath("guru99.txt")
print("Source:", src_path)
- 创建备份名称
在原文件名后添加.bak形成目标路径。
dst_path = src_path + ".bak"
print("Destination:", dst_path)
- 复制文件内容
用shutil.copy()复制文件数据。
import shutil shutil.copy(src_path, dst_path)
- 复制元数据
内容复制后,复制原文件的权限和时间戳。
shutil.copystat(src_path, dst_path)
- 验证复制
用os.path.getmtime()显示备份文件的最后修改时间。
import datetime
mod_time = path.getmtime(dst_path)
print("Last modified:", datetime.datetime.fromtimestamp(mod_time))
运行脚本将在同目录创建 guru99.txt.bak,包含与原文件相同的权限和时间戳。
实用技巧
- 始终先
shutil.copy()后shutil.copystat()——后者要求目标文件已存在。 - 跨文件系统工作时注意并非所有元数据属性都支持;
copystat()仅复制 OS 暴露的属性。 - 递归目录复制可考虑
shutil.copytree()或shutil.copy2(),后者一步完成copy()和copystat()。
总结
- 用
shutil.copy(src, dst)复制文件内容。 - 用
shutil.copystat(src, dst)复制权限、时间戳及其他元数据。
Python
- C# 方法详解:声明、调用、参数、返回类型与重载
- 精通Python数据类型:实战指南
- 精通Python运算符:全面指南
- 精通Python Pass语句:实战指南
- 精通Python函数参数:位置、关键字与默认参数
- 精通 Python 字典:创建、操作与进阶技巧
- Python 文件 I/O:掌握文件操作、读写与管理
- Python len() 函数实战指南:测量字符串、列表、元组、字典等对象长度
- Python 字符串 find() 方法完全指南:语法、参数、替代方案与计数技巧
- Python 检查文件与目录是否存在:实战指南
- Python JSON:编码、解码与文件处理实战指南
- Python 文件 I/O:掌握输入输出操作