Pythonファイル圧縮と解凍を実現するコード例


皆さんは知っているかもしれません。zip形式の書類です。複数のファイルを一つのファイルに圧縮することができます。これはネットワーク上で伝送する時に有用であり、ハードディスクの空間を節約する。
次にPythonを用いて圧縮と解凍を実現した。
ZIPファイル情報を読み出します。
ZIPファイルの内容を読み取るには、まずZipFileオブジェクトを作成する必要があります。ZipFileオブジェクトは概念的にFileオブジェクトと似ている。
ZipFileオブジェクトを作成するには、zipfile.ZipFile関数を呼び出し、文字列に入力します。zipファイルのファイル名を表します。zipfileはPythonモジュールの名前で、ZipFile()は関数の名前です。

import zipfile

#       zfile.zip      
zip_file = zipfile.ZipFile('zfile.zip')

#           
f_content = zip_file.namelist()

#       
f_size = zip_file.getinfo('zfile/a.txt').file_size

#       
c_size = zip_file.getinfo('zfile/a.txt').compress_size
ZipFileオブジェクトにはnamelist()の方法があり、ZIPファイルに含まれるすべてのファイルとフォルダの文字列のリストを返します。これらの文字列は、ZipFileオブジェクトのgetingfo()方法に渡すことができ、特定のファイルに関するZipInfoオブジェクトを返す。ZipInfoオブジェクトは、バイト数を表すfile__などの属性があります。sizeとcomppress_sizeは、それぞれ元のファイルサイズと圧縮後のファイルサイズを表します。ZipFileオブジェクトはアーカイブファイル全体を表し、ZipInfoオブジェクトはこのアーカイブファイル中の各ファイルの有用な情報を保存します。
ZIPファイルから展開
ZipFileオブジェクトのextractiallメソッドは、ZIPファイルからすべてのファイルとフォルダを解凍し、現在のワークディレクトリに格納します。

import zipfile

zip_file = zipfile.ZipFile('zfile.zip')
#   
zip_extract = zip_file.extractall()
zip_extract.close()
このコードを実行すると、example.zipの内容はC:\に展開されます。あるいは、現在の作業ディレクトリではなく、extracall()に転送できるフォルダ名を、そのフォルダに解凍します。extracall()メソッドに渡すフォルダが存在しない場合、作成されます。例えば、もしあなたがexampleZip.extracall('C:\delicious')を使ってでの呼び出しを置き換えると、コードはexample.zipからファイルを解凍して、新しく作成したC:\deliciousフォルダに入れます。
ZipFileオブジェクトのextract()メソッドは、ZIPファイルから単一のファイルを展開します。
ZIPファイルに作成と追加
あなた自身の圧縮ZIPファイルを作成するには、ZipFileオブジェクトを書き込みモードで開く必要があります。すなわち、入力'w'は、2番目のパラメータとして、(open()関数に'w'が入ってきて、テキストファイルを書き込みモードで開きます。)
ZipFileオブジェクトのwrite()方法にパスが入ると、Pythonは、そのパスが指すファイルを圧縮し、ZIPファイルに加える。write()メソッドの最初のパラメータは文字列で、追加するファイル名を表します。二つ目のパラメータは「圧縮タイプ」パラメータで、どのようなアルゴリズムでファイルを圧縮するかをコンピュータに教えます。この値は常にzipfile.ZIP_に設定できます。DEFLATED(これはdeflate圧縮アルゴリズムを指定しています。様々なタイプのデータに対して有効です。)

import zipfile

zip_file = zipfile.ZipFile('new.zip','w')
#  zfile         ,   new.zip  
zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)
#  c.txt           
# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()
このコードは新しいZIPファイルを作成します。new.zipといいます。spam.txt圧縮後の内容を含みます。
ファイルに書き込むように、ZIPファイルの中の既存の内容をすべて消去します。既存のZIPファイルにファイルを追加したいだけであれば、ZipFile()にzipfile.Zipfile()を入力して2番目のパラメータとして追加モードでZIPファイルを開きます。
以上はPythonのファイル圧縮と解凍を実現するコード例の詳細です。pythonの圧縮と解凍に関する資料は他の関連記事に注目してください。