English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pythonでgzip大ファイルの圧縮と解凍を実現する方法

このPythonのインスタンスでは、gzip大ファイルの圧縮と解凍を実現する方法について説明しています。以下に詳細を示します:

#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__ == '__main__':
  src = r'D:\tmp\src.txt'
  dst = r'D:\tmp\src.txt.gz'
  ori = r'D:\tmp\ori.txt'
  gZipFile(src, dst)
  print('gZipFile over!')
  gunZipFile(dst, ori)
  print('gunZipFile over!')

それを簡単にクラスにラップすることもできます:

class GZipTool:
  def __init__(self, bufSize):
    self.bufSize = bufSize
    self.fin = None
    self.fout = None
  def compress(self, src, dst):
    self.fin = open(src, 'rb')
    self.fout = gzip.open(dst, 'wb')
    self.__in2out()
  def decompress(self, gzFile, dst):
    self.fin = gzip.open(gzFile, 'rb')
    self.fout = open(dst, 'wb')
    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()

Pythonに関連するさらに詳しい内容に興味がある場合は、以下の本サイトの特集を確認してください:《Pythonファイルとディレクトリ操作の技術集》、《Pythonテキストファイル操作の技術集》、《Python URL操作の技術集》、《Python画像操作の技術集》、《Pythonデータ構造とアルゴリズムのガイド》、《Python Socketプログラミングの技術集》、《Python関数の使用技術集》、《Python文字列操作の技術集》および《Pythonの入門と上級ガイド》

この記事で述べたことが皆さんのPythonプログラム設計に役立つことを願っています。

声明:本文の内容はインターネットから取得しており、著作権者はすべての権利を保有しています。インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、本サイトは所有権を持ちません。また、人工的な編集は行われておらず、関連する法的責任も負いません。著作権侵害を疑われる内容がある場合は、メールを送信して:notice#oldtoolbag.com(メール送信時、#を@に変更してください)で報告し、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害を疑われるコンテンツを削除します。

おすすめ