🐍 Укус питона 🐍
2.89K subscribers
758 photos
4 videos
279 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Запись и чтение архивных zip-файлов

Zip представляет наиболее популярный формат архивации и сжатия файлов. И язык Python имеет встроенный модуль для работы с ними - zipfile. С помощью этого модуля можно создавать, считывать, записывать zip-файлы, получать их содержимое и добавлять в них файлы. Также поддерживается шифрование, но не поддерживается дешифрование.

Для представления zip-файла в этом модуле определен класс ZipFile. Он имеет следующий конструктор:

🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись и чтение архивных zip-файлов. Продолжение.

Параметры:
• file: путь к zip-файлу

• mode: режим открытия файла. Может принимать следующие значения:
- r: применяется для чтения существующего файла
- w: применяется для записи нового файла
- a: применяется для добавления в файл

• compression: тип сжатия файла при записи. Может принимать значения:
- ZIP_STORED: архивация без сжатия (значение по умолчанию)
- ZIP_DEFLATED: стандартный тип сжатия при архивации в zip
- ZIP_BZIP2: сжатие с помощью способа BZIP2
- ZIP_LZMA: сжатие с помощью способа LZMA

🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись и чтение архивных zip-файлов. Продолжение.

Для работы с файлами этот класс предоставляет ряд методов:

🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Создание и закрытие файла.

Для создания архивного файла в конструктор ZipFile передается режим "w" или "a":

После выполнения кода в текущей папке будет создаваться пустой архивный файл "metanit.zip".

🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Создание и закрытие файла. Продолжение.

После окончания работы с архивом для его закрытия применяется метод close():

Но так как ZipFile также представляет менеджер контекста, то он поддерживает выражение with, которое определяет контекст и автоматически закрывает файл по завершению контекста:

🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись файлов в архив.

Для записи файлов в архив применяется файл write():

Первый параметр представляет файл, который записиывается в архив. Второй параметр - arcname устанавливает произвольное имя для файла внутри архива (по умолчанию это само имя файла). Третий параметр - compress_type представляет тип сжатия, а параметр compresslevel - уровень сжатия.

Например, запишем в архив "metanit.zip" файл "hello.txt" (который, как предполагается, находится в той же папке, где и текущий скрипт python):

🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы
Запись файлов в архив. Продолжение.

Стоит учитывать, что при открытии файла в режиме "w" при всех последующих записях текущее содержимое будет затираться, то есть фактически архивный файл будет создаваться заново. Если нам необходимо добавить, то необходимо определять zip-файл в режиме "a":

🐍 Укус питона // 💬 Чат // #теория #запись #чтение #zip #файлы