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

Python中如何无需区分类型统一复制文件和文件夹

自动识别类型的通用复制实现

Python 标准库 shutil 没有提供原生的、无需区分源对象是文件/目录的统一复制接口,自行封装一个带类型判断的函数即可满足需求,逻辑非常简单:

import os
import shutil

def copy_auto(src: str, dst: str, **kwargs):
    if os.path.isfile(src):
        # 源为文件时调用文件复制逻辑
        shutil.copy(src, dst, **kwargs)
    elif os.path.isdir(src):
        # 源为目录时调用目录递归复制逻辑
        shutil.copytree(src, dst, **kwargs)
    else:
        raise ValueError(f"源路径 {src} 无效:既不是存在的文件也不是目录")

使用注意事项

  • 如果你需要在目标目录已存在时覆盖内容,Python 3.8 及以上版本的 shutil.copytree 支持 dirs_exist_ok=True 参数,调用时直接传入即可:copy_auto("your_src", "your_dst", dirs_exist_ok=True)
  • 如果需要保留文件的原始元数据(权限、修改时间等),把函数内的 shutil.copy 替换为 shutil.copy2 即可
  • 类型判断优先使用 os.path.isfile() 和 os.path.isdir(),不要仅用 os.path.exists() 做判断,避免软链接、特殊设备文件导致的逻辑错误

内容的提问来源于stack exchange,提问作者Luca.D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:15:30