все 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Сообщить о неточности