python基础学习之shutil模块

本文介绍了Python内置shutil模块,涵盖文件复制、移动、重命名、权限转移及目录操作等实用功能,展示了如何通过shutil进行高效文件管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python内置模块---shutil模块介绍

       在日常应用中我们需要对文件进行复制,移动,重命名等操作,这是我们就可以使用Python的内置模块shutil,shutil模块提供了一些支持文件拷贝,删除,移动和重命名等操作的函数。

shutil函数介绍

  • copyfileobj(fsrc, fdst[, length])

         将文件类对象 fsrc 的内容拷贝到文件类对象 fdst。整数值 length 如果给出则为缓冲区大小。length为负值表示拷贝数据时不对源数据进行分块循环处理;默认情况下会分块读取数据以避免不受控制的内存消耗。 请注意如果 fsrc 对象的当前文件位置不为 0,则只有从当前文件位置到文件末尾的内容会被拷贝。

  • shutil.copyfile(src, dst, *, follow_symlinks=True)

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

        对于shutil.copyfile方法的使用需要注意以下几点:

  1. dst 必须是完整的目标文件名;如果 src 和 dst 指定了同一个文件,则将引发SomeFileError。
  2. 目标位置必须是可写的;否则将引发 OSError异常。 如果 dst 已经存在,它将被替换。 特殊文件如字符或块设备以及管道无法用此函数来拷贝。
  3. 如果 follow_symlinks =false且 src 为符号链接,则将创建一个新的符号链接而不是拷贝 src 所指向的文件。
  • shutil.copymode(src, dst, *, follow_symlinks=True)

       从 src 拷贝权限位到 dst。 文件的内容、所有者和分组将不受影响。 src 和 dst 均为路径类对象或字符串形式的路径名。 如果 follow_symlinks 为false,并且 src 和 dst 均为符号链接,copymode()将尝试修改 dst 本身的模式(而非它所指向的文件)。 

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

       从 src 拷贝权限位、最近访问时间、最近修改时间以及旗标到 dst。 在 Linux上,copystat()还会在可能的情况下拷贝“扩展属性”。 文件的内容、所有者和分组将不受影响。 src 和 dst 均为路径类对象或字符串形式的路径名。如果 follow_symlinks 为假值,并且 src 和 dst 均指向符号链接,copystat()将作用于符号链接本身而非该符号链接所指向的文件 — 从 src 符号链接读取信息,并将信息写入 dst 符号链接。

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

       将文件 src 拷贝到文件或目录 dst。 src 和 dst 应为字符串。 如果 dst 指定了一个目录,文件将使用 src 中的基准文件名拷贝到 dst。 返回新创建文件的路径。

       如果 follow_symlinks 为false且 src 为符号链接,则 dst 也将被创建为符号链接。 如果 follow_symlinks 为true且 src 为符号链接,dst 将成为 src 所指向的文件的一个副本。

       copy()会拷贝文件数据和文件的权限模式 (参见 os.chmod())。 其他元数据,例如文件的创建和修改时间不会被保留。 要保留所有原有的元数据,请改用 copy2()。

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

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

  • shutil.move(srcdstcopy_function=copy2)

       递归地将一个文件或目录 (src) 移至另一位置 (dst) 并返回目标位置。如果目标是已存在的目录,则 src 会被移至该目录下。 如果目标已存在但不是目录,它可能会被覆盖,具体取决于 os.rename() 的语义。

  • shutil.disk_usage(path)

       返回给定路径的磁盘使用统计数据,形式为一个named tuple,其中包含 totalused 和 free 属性,分别表示总计、已使用和未使用空间的字节数。 path 可以是一个文件或是一个目录。

  • shutil.copytree(src,dst)

       返回一个新复制的文件夹的路径字符串。将路径 source 处的文件夹,包括它的所有文件和子文件夹,复制到路径destination 处的文件夹。 source 和destination 参数都是字符串。shutil.copy()复制一个文件, shutil.copytree()复制整个文件夹,以及它包含
的文件夹和文件。

  • shutil.rmtree(path)

       这个函数无返回值,这个函数将删除 path 处的文件夹,它包含的所有文件和文件夹都会被删除,无论文件夹是否为空。

#coding:utf-8
import shutil,os
os.chdir('D:\\') #切换目录到D盘根目录
shutil.copy('D:\\file1\\新建文本文档.txt','D:\\file2') #将新建文本文档.txt拷贝至D:\\file2下
shutil.move('D:\\file2\\新建文本文档.txt','D:\\照片') #将D:\\file2\\新建文本文档.txt移动到D:\\照片 目录下
shutil.copytree('D:\\file1','D:\\file3') #将D:\\file1整个目录连同目录下的文件拷贝至file3下,file3不存在是创建该目录。
shutil.rmtree('D:\\file3') #将D:\\file3以及目录下的文件整个删除。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值