shutil 是 Python 的内置常用模块之一,提供了对多个文件和文件夹的操作 api,另外它也提供了对文件的复制和删除功能。和常用于单个文件操作的 os 模块相比,显然它更算得上是一种高层次的文件操作工具。
常用 api 及功能总结如下框图所示:
shutil.copyfile( src, dst) | 从源 src 复制到 dst 中去。当然前提是目标地址是具备可写权限。抛出的异常信息为 IOException. 如果当前的 dst 已存在的话就会被覆盖掉。简单理解为复制文件。 |
---|---|
shutil.move( src, dst) | 移动文件或重命名 |
shutil.copymode( src, dst) | 只是会复制其权限其他的东西是不会被复制的 |
shutil.copystat( src, dst) | 复制权限、最后访问时间、最后修改时间 |
shutil.copy( src, dst) | 复制一个文件到一个文件或一个目录 |
shutil.copy2( src, dst) | 在 copy 上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于 cp –p 的东西 |
shutil.copy2( src, dst) | 如果两个位置的文件系统是一样的话相当于是 rename 操作,只是改名;如果是不在相同的文件系统的话就是做 move 操作 |
shutil.copytree( olddir, newdir, True/Flase) | 把 olddir 拷贝一份 newdir,如果第 3 个参数是 True,则复制目录时将保持文件夹下的符号连接,如果第 3 个参数是 False,则将在复制的目录下生成物理副本来替代符号连接。简单理解为复制源目录下的所有文件。 |
shutil.rmtree( src ) | 递归删除一个目录以及目录内的所有内容 |
函数功能详解:
将 src 复制到 dst 中去,注意这里 src 和 dst 都是文件的文件路径,数据形式为字符串。切记,dst 必须是完整的目标文件名(文件路径+文件名)。
如果 src 和 dst 指定相同的文件,则引发 SameFileError。目的地址 dst 必须是可写入的,否则,将引发 OSError 异常。如果 dst 已经存在,它将被替换。此函数无法复制特殊文件,如字符或块设备和管道。
代码示例如下:
import shutil,os
src_path = 'E:/Kaggle Competiton/model.py'
dst_path= 'E:/Kaggle Competiton/The Nature Conservancy Fisheries Monitoring/'
shutil.copyfile(src_path,dst_path)
输出结果如下图所示: