ホームページ > バックエンド開発 > Python チュートリアル > Python ZipFileモジュールの詳しい説明

Python ZipFileモジュールの詳しい説明

WBOY
リリース: 2016-06-16 08:46:27
オリジナル
1845 人が閲覧しました

Python zipfile モジュールは、zip 形式のエンコーディングを圧縮および解凍するために使用されます。zipfile には、ZipFile と ZipInfo という 2 つの非常に重要なクラスがあります。 ZipFile は zip ファイルの作成と読み取りに使用されるメイン クラスですが、ZipInfo は zip ファイル内の各ファイルに関する情報を保存します。
たとえば、Python zipfile モジュールを読み取りたい場合、ファイル名がファイルのパスであると仮定します。

コードをコピーします コードは次のとおりです。

import zipfile
z =zipfile.ZipFile(filename, 'r')
# ここでの 2 番目のパラメーターは、r で zip ファイルを読み取り、w で zip ファイルを作成します。 zip file
for f in z.namelist():
print f

上記のコードは、zip アーカイブ内のすべてのファイルの名前を読み取ります。 z.namelist() は、圧縮パッケージ内のすべてのファイル名のリストを返します。
次のコードを見てください:
コードをコピーします コードは次のとおりです:

zipfile をインポート
z = zipfile.ZipFile(filename, 'r')
for i in z.infolist():
print i.file_size, i.header_offset

z.infolist()ここで使用されるのは、圧縮パッケージ内のすべてのファイルの情報、つまり ZipInfo のリストです。 ZipInfo オブジェクトには、圧縮パッケージ内のファイルに関する情報が含まれています。最も一般的に使用されるのは、filename、file_size、header_offset です。これらは、それぞれ、圧縮パッケージ内のファイル名、ファイル サイズ、およびファイル データのオフセットです。実際、前の z.namelist() は ZipInfo 内のファイル名を読み取り、それをリストとして返しました。
圧縮パッケージからファイルを解凍する方法は、ZipFile の read メソッドを使用することです:
コードをコピー コードは次のとおりです:

import zipfile
z = zipfile.ZipFile(filename, 'r')
print z.read(z.namelist()[0])

こう読んでください z.namelist()で最初のファイルを出力して画面に出力する もちろんファイルに保存することもできます。次に、zip アーカイブを作成する方法を示します。これは、読み取り方法とよく似ています。
コードをコピーします コードは次のとおりです。

import zipfile, os
z = zipfile.ZipFile(filename, 'w')
# ここでの 2 番目のパラメータは w であり、ここでの filename は圧縮パッケージの名前であることに注意してください

testdir というファイル内のすべてのファイルを圧縮パッケージに追加するとします (ここでは、第 1 レベルのサブディレクトリ内のファイルのみが追加されます):
コードをコピー コードは次のようになります:

if os.path.isdir(testdir):
for d in os.listdir(testdir):
z。 write(testdir+os.sep+d)
# close() を呼び出す必要があります。
z.close()

上記のコードは非常に単純です。別の質問について考えてみましょう。test/111.txt を圧縮パッケージに追加し、それを test22/111.txt としてパッケージに配置したい場合はどうすればよいでしょうか。実際、これは Python ZipFile モジュールの write メソッドの 2 番目のパラメーターの役割です。次のように呼び出します。
コードをコピー コードは次のとおりです。

z.write("test/111. txt", " test22/111.txt")

上記は、Python ZipFile モジュールについて紹介した関連知識です。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート