Python Glossary English

все Python 3zipfileпонятие

zipfile.ZipInfo

архивы ZIP

Описание одного файла внутри ZIP-архива: имя, размеры до и после сжатия, дата, метод сжатия.

Синтаксис

zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0))

Объект из infolist() или getinfo() — способ узнать размер без распаковки: file_size — исходный, compress_size — в архиве. Созданный вручную ZipInfo несёт свои настройки: дата по умолчанию 1980-01-01, а compress_type — ZIP_STORED, поэтому writestr(ZipInfo(...)) кладёт файл без сжатия даже в архив, открытый с ZIP_DEFLATED. getinfo() с несуществующим именем бросает KeyError, а не возвращает None.

Примеры

import zipfile
with zipfile.ZipFile('x.zip', 'w', compression=zipfile.ZIP_DEFLATED) as z:
    z.writestr('auto.txt', 'a' * 1000)
    z.writestr(zipfile.ZipInfo('manual.txt'), 'a' * 1000)
with zipfile.ZipFile('x.zip') as z:
    for info in z.infolist():
        print(info.filename, info.file_size, info.compress_size < 100)
# → auto.txt 1000 True / manual.txt 1000 False — ZipInfo принёс ZIP_STORED
import zipfile
info = zipfile.ZipInfo('note.txt')
print(info.date_time)  # → (1980, 1, 1, 0, 0, 0)
with zipfile.ZipFile('y.zip', 'w') as z:
    z.writestr('a.txt', 'x')
    try:
        z.getinfo('missing.txt')
    except KeyError as e:
        print(type(e).__name__)  # → KeyError

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности