You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中是否有等效Linux cp -u的更新复制文件现成工具?

Python实现类cp -u更新复制功能的解决方案

标准库现成方案(Python 3.9及更早版本)

直接使用标准库distutils模块的copy_file接口即可,无需自行实现时间戳对比逻辑:

  • 调用时将update参数设为True,就完全匹配你描述的更新复制规则:仅当源文件更新、或目标文件不存在时执行复制,等价于Linux下的cp -u命令
  • 示例代码:
from distutils.file_util import copy_file

# 单文件更新复制
copy_file("/path/to/source.file", "/path/to/dest.file", update=True)

# 如果需要批量更新复制整个目录,可以用同模块下的copy_tree
from distutils.dir_util import copy_tree
copy_tree("/path/to/source_dir", "/path/to/dest_dir", update=True)

Python 3.10+ 兼容方案

因为distutils模块在Python 3.10版本被标记为弃用,3.12版本正式从标准库移除,你可以用pathlib + shutil组合实现相同逻辑,代码非常简洁:

from pathlib import Path
import shutil

def update_copy(src: str | Path, dst: str | Path) -> bool:
    src_p = Path(src)
    dst_p = Path(dst)
    # 目标不存在 或 源文件修改时间晚于目标时执行复制
    if not dst_p.exists() or src_p.stat().st_mtime > dst_p.stat().st_mtime:
        # 使用copy2保留文件元数据,和系统cp命令默认行为一致
        shutil.copy2(src_p, dst_p)
        return True
    return False

内容的提问来源于stack exchange,提问作者S.V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:51:04