English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この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(メール送信時、#を@に変更してください)で報告し、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害を疑われるコンテンツを削除します。