2015-07-11 2 views
-4

Это программа printzip.py, которая будет печатать содержимое zip-файла. Предположим, Zip содержит несколько текстовых файлов, поэтому он будет печатать имя текстовых файлов. Я в порядке.Анализ нескольких текстовых файлов в zip

import zipfile 
zf = zipfile.ZipFile('Desktop.zip', 'r') 
print (zf.namelist()) 

Выход: - test1.txt, test2.txt

Но, на мой вопрос, как я могу принять это текстовые файлы для дальнейшего анализа. Как, я хочу подсчитать строку, слова, символы этих текстовых файлов (я могу выполнять эти операции).

Но, мой вопрос заключается в том, как взять этот выход как переменную для ввода дальнейшей работы. Поскольку мы не знаем названия текстовых файлов. Он может быть одиночным или кратным.

В качестве примера я хочу взять test1.txt и test2.txt в качестве ввода для будущих операций.

Кроме того, мы не знали, что zip-файл содержит эти два текстовых файла перед запуском программы printzip.py. Есть ли библиотека для этой многопроцессорной работы? Благодарю.

+0

* Есть ли библиотека для этой многопроцессорной работы? * Возможно, многопроцессорная обработка? https://docs.python.org/2/library/multiprocessing.html –

+0

Существует один, ZeroMQ, но у меня нет опыта работы с ним. – Abhijit

+0

Что это значит? Вы просто хотите прочитать каждый содержащийся файл? –

ответ

1

zf.namelist() возвращает список имен файлов в архиве на Python. Вы можете использовать цикл for, чтобы получить каждое имя из этого списка, а в цикле - zf.read(), чтобы получить байты каждого файла. Например, это напечатает список имен, а затем имя & несжатый размер каждого файла в архиве.

import zipfile 
zf = zipfile.ZipFile('Desktop.zip', 'r') 
fnames = zf.namelist() 
print(fnames) 
for fname in fnames: 
    data = zf.read(fname) 
    print(fname, len(data)) 
    #... do other text processing here 

zf.close() 
+0

Как Python непосредственно открывает текстовый файл в zip? – ytpillai

+0

@ytpillai: 'zf.read' не является стандартным методом Python' file.read' - это метод класса 'ZipFile'. Вы можете увидеть соответствующий исходный код [здесь] (https://hg.python.org/cpython/file/3.4/Lib/zipfile.py). –

+0

OK спасибо, я посмотрю, что – ytpillai

Смежные вопросы