サーチ…


構文

  • zipfileをインポートする
  • クラス zipfile。 ZipFileファイル、モード= 'r'、圧縮= ZIP_STORED、allowZip64 = True

備考

ZIPファイルではないファイルを開くと、 zipfile.BadZipFile例外が発生します。

Python 2.7では、これはzipfile.BadZipfile綴りがzipfile.BadZipfileられていzipfile.BadZipfile 。この古い名前は、Python 3.2以降で新しい名前とともに残っています

Zipファイルを開く

開始するには、 zipfileモジュールをインポートし、ファイル名を設定します。

import zipfile
filename = 'zipfile.zip'

zipアーカイブを使った作業は、ファイルの操作に似ていますが 、zip ファイルを開いてオブジェクトを作成すると、ファイルを閉じる前に作業することができます。

zip = zipfile.ZipFile(filename)
print(zip)
# <zipfile.ZipFile object at 0x0000000002E51A90>
zip.close()

Python 2.7とPython 3では3.2以上で、 withコンテキストマネージャを使用できます。ファイルを "読み取り"モードで開き、ファイル名のリストを出力します:

with zipfile.ZipFile(filename, 'r') as z:
    print(zip)
    # <zipfile.ZipFile object at 0x0000000002E51A90>

Zipfileの内容を調べる

zipファイルの内容を調べるにはいくつかの方法があります。 printdirを使って、さまざまな情報をstdout送ることができます

with zipfile.ZipFile(filename) as zip:
    zip.printdir()

    # Out:
    # File Name                                             Modified             Size
    # pyexpat.pyd                                    2016-06-25 22:13:34       157336
    # python.exe                                     2016-06-25 22:13:34        39576
    # python3.dll                                    2016-06-25 22:13:34        51864
    # python35.dll                                   2016-06-25 22:13:34      3127960
    # etc.

namelistメソッドでファイル名のリストを取得することもできます。ここでは、単にリストを出力します:

with zipfile.ZipFile(filename) as zip:
    print(zip.namelist())

# Out: ['pyexpat.pyd', 'python.exe', 'python3.dll', 'python35.dll', ... etc. ...]

namelistではなく、各ファイルの追加情報(タイムスタンプやファイルサイズなど)を含むZipInfoオブジェクトのリストを返すinfolistメソッドを呼び出すことができます。

with zipfile.ZipFile(filename) as zip:
    info = zip.infolist()
    print(zip[0].filename)
    print(zip[0].date_time)
    print(info[0].file_size)

# Out: pyexpat.pyd
# Out: (2016, 6, 25, 22, 13, 34)
# Out: 157336

zipファイルの内容をディレクトリに抽出する

zipファイルのすべてのファイル内容を抽出する

import zipfile
with zipfile.ZipFile('zipfile.zip','r') as zfile:
    zfile.extractall('path')

単一のファイルを抽出するには、抽出メソッドを使用するには、入力パラメータとして名前リストとパスを使用します

import zipfile
f=open('zipfile.zip','rb')
zfile=zipfile.ZipFile(f)
for cont in zfile.namelist():
    zfile.extract(cont,path)

新しいアーカイブを作成する

書き込みモードで新しいアーカイブオープンzipファイルを作成します。

import zipfile
new_arch=zipfile.ZipFile("filename.zip",mode="w")

このアーカイブにファイルを追加するには、write()メソッドを使用します。

new_arch.write('filename.txt','filename_in_archive.txt') #first parameter is filename and second parameter is filename in archive by default filename will taken if not provided
new_arch.close()

アーカイブに文字列を書きたい場合は、writestr()メソッドを使用できます。

str_bytes="string buffer"
new_arch.writestr('filename_string_in_archive.txt',str_bytes)
new_arch.close()


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow