一、zip
zip是通用的文档压缩标准,python自带模块zipfile,通过zipfile方法,可以实现对文件及目录的压缩和解压缩。
import zipfile
(一)压缩:压缩包内文件结构与未压缩的文件结构一致,依次加入
z = zipfile.ZipFile(zip_package,'w\a')
z.write(file_or_dic)
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()
View Code
注意:向压缩包中加入文件夹时,一次写入只负责一级链接,即只写入文件夹,不包含文件夹内容。
若需要将文件夹及其中内容全部加入压缩包,需要递归。
# # # 压缩文件夹及其中文件
# 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')
View Code
(二)查看压缩文件信息
z = zipfile.ZipFile(zip_package,'r')
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)
View Code
(三)解压:通过参数pwd可设置解压密码
z = zipfile.ZipFile(zip_package,'r'),解压之后z.close()。
z.extractall()
z.extract()
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()
View Code
二、tar
tar是linux常用的打包功能,本身只打包、不压缩,通常与gzip、bzip2、compress等压缩算法搭配使用。
python中自带tarfile模块。import tarfile
(一)打包
f = tarfile.open(‘file.tar’,'w:gz')
f.add()添加打包文件仅tar文件包
f.close()
‘.tar.gz’为后缀。
(二)解包
tarfile.open('file.tar.gz',‘r:’)
f.extractall(),f.getmembers()
3、关闭:f.close()