Документация по Python

Работа с ZIP-архивами

В: Документация по Python

Открытие Zip файлов

Для начала импортировать zipfile модуль и установить имя файла.

 import zipfile
filename = 'zipfile.zip'

 

Работа с почтовыми архивами очень похоже на работу с файлами , вы создаете объект, открыв ZipFile, которая позволяет работать на нем , прежде чем закрыть файл снова.

 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 , мы можем назвать infolist метода, который возвращает список ZipInfo объектов, которые содержат дополнительную информацию о каждом файле, например , метка времени и размере файла:

 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')

 

Если вы хотите извлечь отдельные файлы, используйте метод extract, он принимает список имен и путь в качестве входного параметра

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

Создание новых архивов

Для создания нового архива откройте zipfile с режимом записи.

 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() 
Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.