Home

Tags

zip (zipfile) в python

2013-01-21 python zip

Примеры работы с zip архивами из Python.
Примеры проверялись на python 2.7 ubuntu

Создание и чтение архива

# coding: utf8

from zipfile import ZipFile

filename = __file__

# Создание архива
z = ZipFile('archive.zip', 'w')
# Добавление файла в архив
z.write(filename, 'new_name.py')
# Добавление буфера/строки в архив как файл
z.writestr('dir/data.txt', 'buffer with data')
z.close()

# Открываем архив на чтение
z = ZipFile('archive.zip', 'r')
# Тестирование архива, пробная распаковка
z.testzip()
# Список файлов
print z.namelist()
# Читаем файл
print z.read('dir/data.txt')
z.close()

Открытие архива из буфера, сохранение в буфер (строку)

# coding: utf8

from zipfile import ZipFile
from StringIO import StringIO

# Считываем в строку (буфер)
buf = open('archive.zip', 'r').read()

# Открываем file-like объект  с данными
sio = StringIO(buf)
z = ZipFile(sio, 'a')
z.writestr('test', 'test')
z.close()

# Сохраняем в строку (буфер)
buf = sio.getvalue()
print 'Size', len(buf)

Удаление файла из zip архива

# coding: utf8

from zipfile import ZipFile


zin = ZipFile('archive.zip', 'r')
zout = ZipFile('archive2.zip', 'w')
for item in zin.infolist():
    buf = zin.read(item.filename)
    if item.filename != 'test':
        zout.writestr(item, buf)
zout.close()