Доброго времени суток, читатели, зрители моего канала programmer's notes, любители языка Python. Не забывайте подписываться и писать свои
комментарии к моим статьям и видео.
Библиотека zipfile в Python
Данная библиотека позволяет программно работать с файлами-архивами. Читать список архива, извлекать из архива, писать и добавлять в архив. Речь идет именно о zip-архивах. На самом деле очень полезная в программировании библиотека. Часто требует убирать большое количество файлов в архивы, или наоборот осуществлять поиск по архивам.
Существуют библиотеки для работы с другими архивами. Например модуль lzma. Но это материалы для других статей. Я предполагаю, что читатель умеет работать с архивами (надеюсь).
И так, пример 1
#!/usr/bin/python3
import zipfile
nz = zipfile.ZipFile('arh.zip', 'r')
print(*nz.namelist(), sep='\n')
Архив arh.zip мной заранее подготовлен и он находится в текущем каталоге. Результат выполнения программы
1/
1/primer3.py
1/primer1.py
1/primer4.py
1/primer5.py
1/primer6.py
1/Таблица.csv
1/primer2.py
1/Таблица1.csv
p1.py
p2.py
p3.py
Таблица1.csv
Таблица2.csv
Таблица.csv
Пример 2. Распаковка архива в указанный каталог.
#!/usr/bin/python3
import zipfile
nz = zipfile.ZipFile('arh.zip')
nz.extractall('temp')
Архив распаковывается в каталог temp, который создаётся.
Пример 3.
#!/usr/bin/python3
import zipfile
nz = zipfile.ZipFile('arh.zip', 'r')
nz.extract('1/Таблица.csv', '.') # извлекаем конкретный файл
В результате извлекается конкретный файл.
Пример 4. Создание архива и помещения туда файла. zipfile.ZIP_DEFLATED - способ сжатия.
#!/usr/bin/python3
import zipfile
nz = zipfile.ZipFile('arc.zip', 'w', zipfile.ZIP_DEFLATED)
nz.write('./py1.py') # поместить в архив вместе с подкаталогами
nz.close()
Пример 5. Добавление в архив, если его нет, он создаётся
#!/usr/bin/python3
import zipfile
nz = zipfile.ZipFile('arc.zip', 'a', zipfile.ZIP_DEFLATED)
nz.write('./arh.zip') # добавить в архив вместе с подкаталогами
nz.close()
Ну пока всё. О других архивах поговорим в одной из будущих статей.
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.