一、zip

  zip是通用的文档压缩标准,python自带模块zipfile,通过zipfile方法,可以实现对文件及目录的压缩和解压缩。

 import zipfile

  (一)压缩:压缩包内文件结构与未压缩的文件结构一致,依次加入

z = zipfile.ZipFile(zip_package,'w\a')

z.write(file_or_dic)

z.close()

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_压缩包

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_Code_02

# 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

  注意:向压缩包中加入文件夹时,一次写入只负责一级链接,即只写入文件夹,不包含文件夹内容。

     若需要将文件夹及其中内容全部加入压缩包,需要递归。

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_压缩包

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_Code_02

# # # 压缩文件夹及其中文件
# 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()

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_压缩包

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_Code_02

#  关于读取压缩包内信息
# 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()

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_压缩包

python zipfile.ZipFile保存为utf-8 python zipfile 文件夹_Code_02

# # 解压全部,可设置解压密码
# 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()