Python学习笔记 shutil 模块

目录

  - 简述
  - 复制、删除和移动
  - 压缩和解压缩
  - shutil 模块常见异常介绍

简述

  相比于 os 模块,shutil 模块提供了许多对文件和文件夹的高级操作,其中主要是对文件和文件夹的复制、删除操作,除此之外还提供了文件的移动、压缩和解压缩(依靠 zipfile 和 tarfile 模块)等其他操作。shutil 模块具有 __all__属性,我们可以通过对该属性的访问,获取 shutil 模块的所有公开的方法。下面将详细介绍一些常用的方法

复制、删除和移动

		copyfileobj(fsrc, fdst[, length=16*1024])
            功能:将数据从文件对象(文件句柄,C语言里叫文件指针) fsrc 覆盖复制到文件对象 fdst
            参数:fsrc 表示源文件的文件对象,fdst 表示目标文件的文件对象,length 表示缓冲区大小
            返回值:None
        说明:并不是将 fsrc 文件的所有数据都复制到 fdst 文件里,而是复制从源文件当前的读写指针的位置起,至文件结束的数据。可利用 fsrc.tell() 方法获取文件当前的读写指针位置

        copyfile(src, dst, follow_symlinks=True)
            功能:无需打开文件,将数据从 src 文件覆盖复制到 dst 文件
            参数:src 和 dst 是以字符串形式给出的路径(文件)名,dst必须是完整的目标文件名;
            返回值:一个字符串,表示目标文件的文件名(即 dst)
        说明:目标文件无需存在;另如果 follow_symlinks 为 False并且 src 是符号链接,则将创建一个新的符号链接,而不是将src指向的文件复制到该链接。

        copymode(src, dst, follow_symlinks=True)
            功能:仅将 src 文件的权限位复制到 dst 文件,文件内的容,所有者和组都不受影响
            参数:src 和 dst 是以字符串形式给出的路径(文件)名
            返回值:None
        说明:如果 follow_symlinks 为 False,并且 src 和 dst 均为符号链接,copymode() 将尝试修改 dst 本身的模式(而不是它指向的文件)

        copystat(src, dst, follow_symlinks=True)
            功能:将元数据(权限位、上次访问的时间、上次修改的时间和标志)从 src文件 复制到 dst 文件
            参数:src 和 dst 是以字符串形式给出的路径(文件)名
            返回值:None
        说明:如果 follow_symlinks 为 False,并且 src 和 dst 都引用符号链接,copystat() 则将对符号链接本身(而不是符号链接所引用的文件)进行操作,即从 src 符号链接读取信息,并将信息写入 dst 符号链接

        copy(src, dst, follow_symlinks=True)
            功能:仅复制 src 文件的内容和权限至 dst 文件(或目录),不复制其他元数据(如创建时间)
            参数:src 和 dst 是以字符串形式给出的路径(文件)名;如果 dst 指定是目录,则文件将使用 src 中的基本文件名复制到 dst 中,返回新创建文件的路径
            返回值:一个字符串,表示目标文件的文件名(即 dst)
        说明:如果 follow_symlinks 为 False,并且 src 是符号链接,则将 dst 创建为符号链接。 如果 follow_symlinks 为 True 并且 src 是符号链接,则 dst 将是 src 引用的文件的副本。

        copy2(src, dst, follow_symlinks=True)
            说明:此函数除了会复制元数据之外,其他与 copy() 函数相同

        copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
             ignore_dangling_symlinks=False)
            功能:用递归的方式复制以 src 为根的整个目录树(包括元信息,因为默认复制函数为 copy2)
            参数:src 表示源目录的根目录,dst 表示目标目录(dst 必须不存在),其他参数可选
            返回值:一个字符串,表示目标目录(即 dst)

        rmtree(path, ignore_errors=False, onerror=None)
            功能:用递归的方式删除目录树
            参数:path 表示欲删除目录的根目录,其他参数可选
            返回值:None
        说明:1、如果 ignore_errors 为 True,则删除失败导致的错误将被忽略;如果为 False 或忽略,则将通过调用 onerror 指定的处理程序来处理此类错误;如果省略,则引发异常。
             2、如果提供了 onerror,则它必须是可调用的,可以接受三个参数:function,path 和 excinfo,第一个参数function是引发异常的函数;
                第二个参数 path是传递给function的目录名;第三个参数 excinfo 将是 sys.exc_info() 所返回的异常信息。由 onerror 引发的异常不会被捕获

        move(src, dst, copy_function=copy2)
            功能:将文件或目录递归移动到另一个位置
            参数:src 和 dst 都是字符串,分别表示源目录和目标目录
            返回值:返回目的文件或目录
        说明:1、如果目标是目录或目录的符号链接,则源将移动到目录内,要求目标路径必须不存在。
             2、如果目标已经存在但不是目录,则可能会根据 os.rename() 的语义将其覆盖。
             3、如果目标位于我们当前的文件系统上,则使用 os.rename();否则,将 src 复制到目标,然后将其删除

        disk_usage(path)
            功能:获取有关给定路径的磁盘使用情况统计信息
            参数:path 是一个字符串,表示路径
            返回值:一个三元组,包括以字节为单位的 total(总计空间)、used(已用空间)和 free(可用空间),

压缩和解压缩

		make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
                 dry_run=0, owner=None, group=None, logger=None)
            功能:将指定文件或目录打包成压缩包,如:zip、tar
            参数:base_name 表示压缩打包后的文件(不包括扩展名)或路径名,只是文件名时,则保存至当前功作目录,否则保存至指定路径
                 format 表示文件格式(zip,tar,gztar,bztar 或 xztar 之一, 或任何其他注册格式)
                 root_dir 表示要压缩文件或目录的根目录,默认为当前工作目录
                 base_dir 表示开始压缩的目录,默认为当前工作目录
                 dry_run 当其值为 True 时将不压缩文件,但会将要执行的操作记录到 logger
                 logger 通常是一个 logging.Logger对象 ,用于记录日志,默认为 None
                 owner: 表示用户,默认当前用户
                 group: 表示组,默认当前组
            返回值:目标文件的名称
        说明:查阅资料时发现有些博客注明 root_dir是压缩的源文件,但经测试,如果 base_dir 是 root_dir 文件中的文件之一,则压缩包中不会有 root_dir 的其他文件,故 base_dir 才表示开始压缩的目录

        get_archive_formats()
            功能:返回支持压缩的格式列表
            参数:无
            返回值:一个列表,其每个元素都是一个二元组,表示格式的名字和描述

        unpack_archive(filename, extract_dir=None, format=None)
            功能:解压缩文件或目录
            参数:filename 表示压缩包的名字,必须是完整的路径
                 extract_dir 表示目标目录,默认为当前工作目录
                 format 表示解压格式,若不提供,则使用文件的扩展名,若扩展名没有注册。则抛出异常
            返回值:None

        get_unpack_formats()
            功能:返回支持解压缩的格式列表
            参数:无
            返回值:一个列表,其每个元素都是一个三元组,表示格式的名字、扩展名和描述

shutil 模块常见异常介绍

		SameFileError:当源文件和目标是同一文件时引发
        SpecialFileError:在尝试执行特殊文件(例如命名管道)不支持的某种操作(例如复制)时引发
        ExecError:在无法执行命令时引发
        ReadError:在无法读取存档时引发
        RegistryError:在具有压缩和解压缩注册表的注册表操作失败时引发
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值