Как обработать 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 байтов.

Полная справочная документация здесь.

Другие вопросы по тегам