python笔记07-----打包模块(shutil,zipfile,tarfile)

时间:2020-11-28 05:07:31

1.shutil模块

复制删除

   import shutil
shutil.copy('filename', 'test2')     # copy方法 f1 = open('filename',encoding='utf-8') # 复制文件copyfileobj方法
f2 = open('f','w',encoding='utf-8')
shutil.copyfileobj(f1, f2) shutil.copyfile('filename','test3')    # 复制文件copyfile方法
shutil.move("test3", "test4")        # 文件的移动和改名
shutil.copymode('test','test1') # 权限copy
shutil.copystat("test","test1") # 复制文件的状态
shutil.copy2('test','test1') # 复制文件和状态
shutil.copytree('dir1','dir2')       # 递归复制 必须是目录
shutil.rmtree('dir1')            # 删除目录 多个用逗号分隔

打压缩包

shutil.make_archive(‘base_name’,’format’,’root_dir’)

base_name:压缩包的文件名,也可以使压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径

format:压缩包种类,”zip”,”tar”,”bztar”,”gztar”

root_dir:要压缩的文件夹路径(默认当前目录)

owner:用户 默认当前

group:组,默认当前

logger:用于记录日志,通常是logging.Logger对象

1 import shutil
2 import os
3 dir = os.path.exists(r'/data/') #判断目录是否存在
4 if dir == False:        #如果不存在
5 os.makedirs('/data/1/2/') #创建目录
6 shutil.make_archive("data", "gztar", "/data/") #打成tar.gz包

解包和其他方法

unpack_archive()

功能:解包操作
格式:shutil.unpack_archive('归档文件路径','解包目标文件夹')
返回值:None
注意:文件夹不存在会新建文件夹

get_archive_formats()

功能:获取当前系统已注册的归档文件格式(后缀)
格式:shutil.get_archive_formats()
返回值:列表 [(后缀,解释),(后缀,解释),(后缀,解释)...]

get_unpack_formats()

功能:获取当前系统已经注册的解包文件格式(后缀)
格式:shutil.get_unpack_formats()
返回值:列表 [(后缀,解释),(后缀,解释),(后缀,解释)...]

 

2.zipfile模块 -单独压缩/解压文件

压缩

 import zipfile
z = zipfile.ZipFile("d5.zip", "w")
z.write("笔记3")
z.write("笔记2")
z.close()

解压

 z = zipfile.ZipFile("d5.zip", "r")
z.extractall("d5.zip", "C:\\")
z.close()

3.tarfile模块

压缩

 import tarfile
tar = tarfile.open('tarname.tar','w') #tarname.tar 是压缩后的文件名
tar.add('test11', arcname='name.zip') #test11 是存在的目录,arcname可以不加
tar.close()

解压

 import tarfile
tar = tarfile.open('C:\\tarname.tar','r')
tar.extractall('.') #可设置地址
tar.close()