Python shutil用法

shutil介绍

shutil 模块提供了一系列对文件和文件集合的高阶操作。 特别是提供了一些支持文件拷贝和删除的函数。 对于单个文件的操作,请参阅 os 模块。

最常用的主要是copy()、move()等函数。

shutil模块常见函数

1. shutil.copyfileobj(fsrc, fdst[, length])

将文件类对象 fsrc 的内容拷贝到文件类对象 fdst。 copyfileobj是最基本的函数,下面的很多函数都用到了此函数。

import shutil
shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

2. shutil.copyfile(src, dst)

将名为 src 的文件的内容(不包括元数据)拷贝到名为 dst 的文件并以尽可能高效的方式返回 dst。 src 和 dst 均为路径类对象或以字符串形式给出的路径名。

shutil.copyfile('f1.log', 'f2.log')

3. shutil.copymode(src, dst, *, follow_symlinks=True)

从 src 拷贝权限位到 dst。 文件的内容、所有者和分组将不受影响。

shutil.copymode('f1.log', 'f2.log')

4. shutil.copystat(src, dst, *, follow_symlinks=True)

从 src 拷贝权限位、最近访问时间、最近修改时间以及旗标到 dst。

shutil.copystat('f1.log', 'f2.log')

5. shutil.copy(src, dst, *, follow_symlinks=True)

将文件 src 拷贝到文件或目录 dst。

shutil.copy('f1.log', 'f2.log')

shutil.copy()函数源代码:

def copy(src, dst, *, follow_symlinks=True):
    """Copy data and mode bits ("cp src dst"). Return the file's destination.
    The destination may be a directory.
    If follow_symlinks is false, symlinks won't be followed. This
    resembles GNU's "cp -P src dst".
    If source and destination are the same file, a SameFileError will be
    raised.
    """
    if os.path.isdir(dst):
        dst = os.path.join(dst, os.path.basename(src))
    copyfile(src, dst, follow_symlinks=follow_symlinks)
    copymode(src, dst, follow_symlinks=follow_symlinks)
    return dst

6. shutil.copy2(src, dst, *, follow_symlinks=True)¶

类似于 copy(),区别在于 copy2() 还会尝试保留文件的元数据。

shutil.copy2('f1.log', 'f2.log')

shutil.copy2()源代码:

def copy2(src, dst, *, follow_symlinks=True):
    """Copy data and metadata. Return the file's destination.
    Metadata is copied with copystat(). Please see the copystat function
    for more information.
    The destination may be a directory.
    If follow_symlinks is false, symlinks won't be followed. This
    resembles GNU's "cp -P src dst".
    """
    if os.path.isdir(dst):
        dst = os.path.join(dst, os.path.basename(src))
    copyfile(src, dst, follow_symlinks=follow_symlinks)
    copystat(src, dst, follow_symlinks=follow_symlinks)
    return dst

7. shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)

将以 src 为根起点的整个目录树拷贝到名为 dst 的目录并返回目标目录。 dirs_exist_ok 指明是否要在 dst 或任何丢失的父目录已存在的情况下引发异常。

shutil.ignore_patterns(*patterns)
这个工厂函数会创建一个函数,它可被用作 copytree() 的 ignore 可调用对象参数,以忽略那些匹配所提供的 glob 风格的 patterns 之一的文件和目录。 参见以下示例。

递归拷贝文件夹。

shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

8. shutil.rmtree(path, ignore_errors=False, οnerrοr=None)

删除一个完整的目录树;path 必须指向一个目录(但不能是一个目录的符号链接)。 如果 ignore_errors 为真值,删除失败导致的错误将被忽略;如果为假值或是省略,此类错误将通过调用由 onerror 所指定的处理程序来处理,或者如果此参数被省略则将引发一个异常。

shutil.rmtree('folder1')

9. shutil.move(src, dst, copy_function=copy2)

递归地将一个文件或目录 (src) 移至另一位置 (dst) 并返回目标位置。

shutil.move('folder1', 'folder3')

参考

shutil — 高阶文件操作
python模块----shutil

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值