目录
一、shutil模块函数目录
- chown
- collections
- copy
- copy2
- copyfile
- copyfileobj
- copymode
- copystat
- copytree
- disk_usage
- errno
- fnmatch
- get_archive_formats
- get_terminal_size
- get_unpack_formats
- getgrnam
- getpwnam
- ignore_patterns
- make_archive
- move
- os
- register_archive_format
- register_unpack_format
- rmtree
- stat
- sys
- unpack_archive
- unregister_archive_format
- unregister_unpack_format
- which
二、复制文件或内容
1 shutil.copyfileobj() 将文件内容到另一个文件
#copy文件内容到另一个文件,可以copy指定大小的内容
#将A的内容复制至B
import shutil
f1=open(r"E:\python\tempfile\Q1.txt",'r')
f2=open(r"E:\python\项目\Q3.txt",'a+') #w+模式清空原有文件(无则建),再写入复制内容
shutil.copyfileobj(f1,f2,length=16*1024)
2 shutil.copyfile(src,dst) 直接复制文件
import shutil
shutil.copyfile(r"E:\python\tempfile\Q1.txt",r"E:\python\项目\Q4.txt")
3.shutil.copy(src,dst) 复制文件的内容以及权限
#复制文件的内容以及权限,先copyfile后copymode
#copy复制内容及权限
import shutil
shutil.copy(r"E:\python\tempfile\Q1.txt",r"E:\python\项目\Q5.txt")
4.shutil.copy2(src,dst) 复制文件内容以及所有状态信息
#复制文件的内容以及文件的所有状态信息。先copyfile后copystat
#copy2复制文件的内容以及文件的所有状态信息
import shutil
shutil.copy2(r"E:\python\tempfile\Q1.txt",r"E:\python\项目\Q6.txt")
5.shutil.copytree 复制目录所有文件,无则创建
#复制整个目录(文件夹)
import shutil
shutil.copytree(r"E:\python\项目",r"E:\python\项目1")
三、删除目录或文件
1.删除整个目录
shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的去删除文件夹
只能用于删除文件夹,不能删除文件
import os ,shutil
shutil.rmtree(r"D:\qwe")
删除文件用os.remove()函数
2.移动目录或文件
(1)移动目录
-->当qwe文件夹存在时,整个123文件夹移动到qwe里面
-->当qwe文件夹不存在时,123文件夹会换名为qwe
import os ,shutil
shutil.move(r'D:\123',r"D:\qwe")
(2)移动文件
-->当qwe1文件夹存在时,文件顺利移动到qwe1里面
-->当qwe1文件夹不存在时,文件会换名为qwe1
import os ,shutil
shutil.move(r'D:\123\201701\20170114\HC GT US 20170110-20170113.txt',r"D:\qwe1")
四、shutil.make_archive压缩文件夹
1.shutil.make_archive语法参数
- shutil.make_archive(base_name, format,...)
- 创建压缩包并返回文件路径,例如:zip、tar
- base_name: 压缩包的文件名,也可以是压缩包的路径。
- format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
- root_dir: 要压缩的文件夹路径(默认当前目录)
- owner: 用户,默认当前用户
- group: 组,默认当前组
- logger: 用于记录日志,通常是logging.Logger对象
2.shutil.make_archive案例
#将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录
import shutil
ret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
#将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录
import shutil
ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
压缩文件夹
import os ,shutil
shutil.make_archive(r"D:\123",'gztar')