Как обработать zip-файл с помощью Python
a.zip---
-- b.txt
-- c.txt
-- d.txt
Методы обработки zip-файлов с помощью Python,
Я мог бы развернуть zip-файл во временный каталог, а затем обработать каждый txt-файл по одному
Здесь мне больше интересно узнать, предоставляет ли Python такой способ, чтобы мне не приходилось вручную расширять zip-файл и просто обрабатывать zip-файл как специализированную папку и обрабатывать каждый txt соответствующим образом.
2 ответа
Стандартная библиотека Python поможет вам.
Блоги Дуга Хеллмана очень информативны о выбранных модулях: http://www.doughellmann.com/PyMOTW/zipfile/
Чтобы прокомментировать пост Davids: Начиная с Python 2.7, объект Zipfile предоставляет контекстный менеджер, поэтому рекомендуемый способ будет следующим:
import zipfile
with zipfile.ZipFile("zipfile.zip", "r") as f:
for name in f.namelist():
data = f.read(name)
print name, len(data), repr(data[:10])
close
метод будет вызван автоматически из-за оператора with. Это особенно важно, если вы пишете в файл.
Да, вы можете обрабатывать каждый файл отдельно. Взгляните на учебник здесь. Для ваших нужд вы можете сделать что-то вроде этого примера из этого урока:
import zipfile
file = zipfile.ZipFile("zipfile.zip", "r")
for name in file.namelist():
data = file.read(name)
print name, len(data), repr(data[:10])
Это будет перебирать каждый файл в архиве и распечатывать его имя, длину и первые 10 байтов.
Полная справочная документация здесь.