python实现压缩和解压缩的方法

  介绍

这期内容当中小编将会给大家带来有关python实现压缩和解压缩的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>一、说明

压缩和解压缩是日常常用的操作,不管是windows上图形界面的操作,还是linux上用命令来进行压缩解压缩,总的而言都还是比较方便的。

但用代码来实现就没做过,近期也得实现代码压缩与解压缩操作,所以就抽时间来研究一下。

<强>二、邮政文件压缩和解压缩实现

导入操作系统
  进口zipfile
  
  
  #函数功能是zip_file_list所有文件,和zip_dir_list所有目录下的所有文件,被压缩到一个zip_file_name的压缩文件中
  def my_zip_function (zip_file_name zip_file_list=[], zip_dir_list=[]):
  #压缩文件最后需要接近,为了方便我们直接用
  zipfile。ZipFile (zip_file_name“w") zip_obj:
  #压缩文件
  在zip_file_list tmp_file:
  zip_obj.write (tmp_file)
  #压缩目录
  在zip_dir_list tmp_dir:
  # zipfile没有直接压缩目录的功能,要压缩目录只能遍历目录一个一个文件压。
  为根、dirs文件os.walk (tmp_dir):
  #如果想要目录为空时仍将该目录压缩进的去,该目录也要压缩一遍;反之请将以下行注释掉
  zip_obj.write(根)
  tmp_file的文件:
  #拼接文件完整目录,不然只用文件名代码找不到文件
  tmp_file_path=os.path。加入(根,tmp_file)
  zip_obj.write (tmp_file_path)
  
  
  #函数功能是遍历压缩文件中的所有文件
  def my_traversal_zip_function (zip_file_name):
  zipfile。ZipFile (zip_file_name“r") zip_obj:
  #返回结果是一个ZipInfo列表
  #如果在压缩时显示压缩目录,则目录也作为一个单独的ZipInfo呈现在列表中;反之则没有目录的ZipInfo
  all_file_list=zip_obj.infolist ()
  在all_file_list tmp_file:
  打印(tmp_file.filename)
  #还可以在不解压的情况下直接读取文件的内容
  #可以通过ZipInfo.is_dir()来区分是文件还是目录
  #如果不是tmp_file.is_dir ():
  #与zip_obj.open zip_fd (tmp_file):
  #打印(zip_fd.read ())
  
  
  #函数的功能是将压缩文件直接解压
  def my_unzip_function (zip_file_name路径=?”):
  zipfile。ZipFile (zip_file_name“r") zip_obj:
  zip_obj.extractall(路径(路径)
  
  
  if __name__==癬_main__":
  zip_file_name=皌est_zip.zip"
  #自己在测试时要先自行创建好要压缩的文件和目录
  zip_file_list=[“test_tar_file1.txt",“test_tar_file2.txt"]
  zip_dir_list=[“test_tar_dir"]
  my_zip_function (zip_file_name zip_file_list zip_dir_list)
  my_traversal_zip_function (zip_file_name)
  # my_unzip_function (zip_file_name路径=?”)

, <强>三、焦油文件的压缩与解压缩实现

除了直接的. tar文件,还包括gz/.tar.bz2/. tar。xz等格式文件的压缩与解压缩实现。

导入操作系统
  进口tarfile
  
  
  #函数功能是tar_file_list所有文件,和tar_dir_list所有目录下的所有文件,被压缩到一个tar_file_name的压缩文件中
  def my_tar_function (tar_file_name tar_file_list=[], tar_dir_list=[],模型=皐"):
  #本来也应该是tarfile。TarFile (tar_file_name模型)来创建的,但TarFile不支持“r: gz"等扩展形式
  #压缩文件最后需要接近,为了方便我们直接用
  tarfile。tar_obj开放(tar_file_name模型):
  #压缩文件
  在tar_file_list tmp_file:
  tar_obj.add (tmp_file)
  #压缩目录。和zipfile相比tarfile允许直接压缩目录,而不需要去遍历目录一个个文件压
  在tar_dir_list tmp_dir:
  tar_obj.add (tmp_dir)
  
  
  #函数功能是遍历压缩文件中的所有文件
  def my_traversal_tar_function (tar_file_name模型=皉"):
  tarfile。tar_obj开放(tar_file_name模型):
  #返回结果是一个TarInfo列表
  all_file_list=tar_obj.getmembers ()
  在all_file_list tmp_file:
  打印(tmp_file.name)
  #还可以在不解压的情况下直接读取文件的内容
  #可以通过TarInfo.isdir()来区分是文件还是目录
  #如果不是tmp_file.isdir ():
  # #相当于邮政的开放,并不会把文件给解压出来
  # tar_fd=tar_obj.extractfile (tmp_file)
  #打印(tar_fd.read ())
  
  
  #函数的功能是将压缩文件直接解压
  def my_untar_function (tar_file_name路径=案删?模型=皉"):
  tarfile。tar_obj开放(tar_file_name模型):
  tar_obj.extractall(路径(路径)
  
  
  if __name__==癬_main__":
  #自己在测试时要先自行创建好要压缩的文件和目录
  tar_file_list=[“test_tar_file1.txt",“test_tar_file2.txt"]
  tar_dir_list=[“test_tar_dir"]
  tar_file_name=皌est_tar.tar"
  #在. tar基础上,tarfile还支持广州/bz2/xz获取的压缩,只要在原来打开模式的基础上使用:或|接上压缩方法即可,如“r: gz"
  #特别的,如果是读取文件,可以使用“r: *“来指示尝试以任意格式读取
  open_model=皐"
  # open_model=皐: gz"
  my_tar_function (tar_file_name tar_file_list、tar_dir_list模型=open_model)
  open_model=皉"
  # open_model=皉: *“;
  my_traversal_tar_function (tar_file_name、模型=open_model)
  # open_model=皉: *“;
  # my_untar_function (tar_file_name路径=案删?模型=open_model) 

python实现压缩和解压缩的方法