shutil模块是对os模块中文件操作的补充,提供文件和目录的移动、复制、打包、压缩、解压等功能
shutil常用函数
shutil.copyfile(src, dst) 复制文件, 如果dst已存在则覆盖
shutil.move(src, dst) 移动文件或重命名
shutil.copymode(src, dst) 只拷贝权限。文件内容、组、用户均不变
shutil.copystat(src, dst) 复制权限、最后访问时间、最后修改时间
shutil.copy(src, dst) 复制一个文件到一个文件或一个目录
shutil.copy2(src, dst) 复制文件和状态信息,类似于shell中的cp –p命令
shutil.copytree(olddir, newdir, symlinks=False, ignore=None) 递归复制文件夹
shutil.rmtree(src) 递归删除目录以及目录内的所有内容
shutil.make_archive(base_name, format,...) 创建压缩包并返回文件路径
常用函数大概就是这么些。。下面我们开始通过操作实例讲解一下这些函数的使用方法和注意事项。也方便后面用到这个shutil模块时可以做到信手拈来。
shutil使用实例
1、将data1文件夹下的123.txt文件复制到data2文件夹下。保持文件名123.txt不变。
说明:如果指定目录D:\dir_temp\data2下已经存在123.txt文件,会进行覆盖操作。
2、将data1文件夹下的123.txt文件复制到data2文件夹下。同时文件名修改为456.txt
3、将data1文件夹下的123.txt文件移动到data2文件夹下
4、将data1文件夹下的子文件夹及文件复制到data2目录下。复制前data1和data2的文件夹及内容如下:
执行如下操作
特别注意:data2文件夹下的data1目录不能存在,否则会报错。可以自己尝试一下。
执行结果如下:
4、删除data2文件夹下的子文件夹和文件。
可以发现,data2文件夹已经不存在了。
小结
使用shutil模块对文件和目录的复制、移动、删除操作基本上就是这些了。看了这些例子再用shutil模块应该都没啥困难了吧。