
shutil用于高级文件操作如复制、移动、删除文件/目录等openpyxl用于读写 Excel.xlsx文件支持公式、样式、图表等os提供与操作系统交互的功能如路径操作、环境变量、文件系统访问等subprocess用于创建新进程、执行外部命令如 shell 命令、可执行程序并与其输入输出交互。这些模块常联合用于自动化办公场景例如用os和shutil管理 Excel 文件的路径与备份用openpyxl处理数据读写与格式设置用subprocess调用外部工具如pandoc转文档、git提交、或导出 PDF 等。shutil.copy()和shutil.copy2()都用于复制文件但关键区别在于是否保留源文件的元数据metadata✅shutil.copy(src, dst)复制文件内容和权限模式mode如读写执行位但不保留修改时间mtime、访问时间atime、创建时间ctime等时间戳也不保留扩展属性如 SELinux context、ACL 等。✅shutil.copy2(src, dst)在copy()基础上额外调用copystat()尽可能保留源文件的所有元数据包括修改时间st_mtime访问时间st_atime权限模式st_mode所有者与组st_uid,st_gid需有相应权限在支持的系统上扩展属性、xattr、ACL 等依赖底层os.chown()/os.utime()/shutil.copystat()实现⚠️ 注意copy2()无法保证 100% 完全复刻所有元数据例如 Windows 上的“创建时间”可能受限于 API 或目标文件系统若目标路径已存在且为目录两者行为一致将文件复制到该目录下若目标为文件则覆盖二者均不复制目录——复制目录需用shutil.copytree()。示例importshutilimportos srcdata.txtshutil.copy(src,copy_basic.txt)# 仅保留权限shutil.copy2(src,copy_preserve.txt)# 保留时间戳 权限 更多元数据print(Original mtime:,os.path.getmtime(src))print(Copy2 mtime:,os.path.getmtime(copy_preserve.txt))# 几乎相同