Maison  >  Article  >  développement back-end  >  Comment compresser et décompresser de gros fichiers gzip en Python

Comment compresser et décompresser de gros fichiers gzip en Python

高洛峰
高洛峰original
2017-02-22 16:32:301691parcourir

L'exemple de cet article décrit la méthode de compression et de décompression de gros fichiers gzip en Python. Partagez-le avec tout le monde pour référence, comme suit :

#encoding=utf-8
#author: walker
#date: 2015-10-26
#summary: 测试gzip压缩/解压文件
import gzip
BufSize = 1024*8
def gZipFile(src, dst):
  fin = open(src, 'rb')
  fout = gzip.open(dst, 'wb')
  in2out(fin, fout)
def gunZipFile(gzFile, dst):
  fin = gzip.open(gzFile, 'rb')
  fout = open(dst, 'wb')
  in2out(fin, fout)
def in2out(fin, fout):
  while True:
    buf = fin.read(BufSize)
    if len(buf) < 1:
      break
    fout.write(buf)
  fin.close()
  fout.close()
if __name__ == &#39;__main__&#39;:
  src = r&#39;D:\tmp\src.txt&#39;
  dst = r&#39;D:\tmp\src.txt.gz&#39;
  ori = r&#39;D:\tmp\ori.txt&#39;
  gZipFile(src, dst)
  print(&#39;gZipFile over!&#39;)
  gunZipFile(dst, ori)
  print(&#39;gunZipFile over!&#39;)

peut également être simplement encapsulé dans une classe :

class GZipTool:
  def __init__(self, bufSize):
    self.bufSize = bufSize
    self.fin = None
    self.fout = None
  def compress(self, src, dst):
    self.fin = open(src, &#39;rb&#39;)
    self.fout = gzip.open(dst, &#39;wb&#39;)
    self.__in2out()
  def decompress(self, gzFile, dst):
    self.fin = gzip.open(gzFile, &#39;rb&#39;)
    self.fout = open(dst, &#39;wb&#39;)
    self.__in2out()
  def __in2out(self,):
    while True:
      buf = self.fin.read(self.bufSize)
      if len(buf) < 1:
        break
      self.fout.write(buf)
    self.fin.close()
    self.fout.close()


Pour plus de méthodes Python pour compresser et décompresser de gros fichiers gzip, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn