一、zip
zip是通用的文档压缩标准,python自带模块zipfile,通过zipfile方法,可以实现对文件及目录的压缩和解压缩。
import zipfile
(一)压缩:压缩包内文件结构与未压缩的文件结构一致,依次加入
1、打开压缩包:z = zipfile.ZipFile(zip_package,'w\a')
2、向压缩包中加入文件或空文件夹:z.write(file_or_dic)
3、关闭压缩包:z.close()
# z = zipfile.ZipFile('codes.zip','w') # 打开压缩包 # z.write('codes') # 将文件夹(不含文件)加入压缩包 # z.write('codes\\already') # 将文件夹下文件夹加入压缩包 # z.write('codes\\already\\random_code.py') # 将文件夹下文件加入压缩包 # z.write('codes\\web_study.py') # 直接添加文件在压缩包下 # z.close()
注意:向压缩包中加入文件夹时,一次写入只负责一级链接,即只写入文件夹,不包含文件夹内容。
若需要将文件夹及其中内容全部加入压缩包,需要递归。
# # # 压缩文件夹及其中文件 # import os # # # os.remove('def_codes.zip') # # def zipdir(src,zip_src): # # def inner_iter_dic_zip(src,zip_src): # # z = zipfile.ZipFile(zip_src,'a') # # if os.path.isfile(src): # # z.write(src) # # elif len(os.listdir(src))==0: # # z.write(src) # # else: # # for obj in os.listdir(src): # # inner_iter_dic_zip(src+os.sep+obj,zip_src) # # # # z = zipfile.ZipFile(zip_src,'w') # # if os.path.isfile(src): # # # 文件,添加进压缩包 # # z.write(src) # # z.close() # # elif len(os.listdir(src))==0: # # # 空文件夹,添加进压缩包 # # z.write(src) # # z.close() # # else: # # # 非空文件夹继续操作 # # z.close() # # for obj in os.listdir(src): # # inner_iter_dic_zip(src+os.sep+obj,zip_src) # # # # zipdir('codes','def_codes.zip')
(二)查看压缩文件信息
1、打开压缩包:z = zipfile.ZipFile(zip_package,'r')
2、查看压缩包内文件信息列表:z.infolist(),文件名字列表:z.namelist()
3、关闭压缩包:z.close()
# 关于读取压缩包内信息 # z = zipfile.ZipFile('def_codes.zip','r') # # for i in z.infolist(): # # print(i) # # print('-'*30) # for i in z.namelist(): # print(i)
(三)解压:通过参数pwd可设置解压密码
解压之前也需要打开压缩包z = zipfile.ZipFile(zip_package,'r'),解压之后z.close()。
1、解压压缩包全部文件到指定目录 :z.extractall()
2、解压压缩包内指定文件到指定目录: z.extract()
3、解压出压缩包内指定文件的内容: z.read()
# # 解压全部,可设置解压密码 # z = zipfile.ZipFile('def_codes.zip','r') # z.extractall('.\\rezip') # z.close() # 解压一个指定文件,可设置解压密码 # 指定解压的文件,使用namelist的元素 z = zipfile.ZipFile('def_codes.zip','r') z.extract('codes/n/',r'.\rezip_n') z.close() # # 解压出其中一个文件的内容 # # 文件和空文件夹解压后都是bytes类型,空文件夹:b'' # f = z.read(z.namelist()[1]) # z.close()
二、tar
tar是linux常用的打包功能,本身只打包、不压缩,通常与gzip、bzip2、compress等压缩算法搭配使用。
python中自带tarfile模块。import tarfile
(一)打包
1、w模式打开tar文件包,同时指定支持的压缩算法,如:f = tarfile.open(‘file.tar’,'w:gz')
2、f.add()添加打包文件仅tar文件包
3、关闭tar文件包:f.close()
如:tar+gz算法打包后,文件包以‘.tar.gz’为后缀。
(二)解包
1、直接打开文件包:f= tarfile.open('file.tar.gz',‘r:’)
2、解包:f.extractall(),f.getmembers()
3、关闭:f.close()
浙公网安备 33010602011771号