Почтовые файлы Python, прочитанные - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в Python, у меня есть файл .zip, который имеет несколько подпапок, и каждая подпапка имеет несколько файлов .txt.Я пытаюсь прочитать все файлы .txt, но хочу сохранить папку с файлами в переменной, но я не могу этого сделать.

Например, для: "test.zip", в котором три папки "a", "b", "c", у каждого есть несколько (> 10 000) .txt файлов. Я хочу прочитать все файлы в папке "a" и сохранить их в переменной a_file, и то же самое с папками "b" и "c", которые я пробовалследующий код:

for file in os.listdir():
if file.endswith('test.zip'):
    zfile=zipfile.ZipFile(file)
    fnames= [f.filename for f in zfile.infolist()]
    for subfile in fnames:
        if fnames == "a" . #name of a folder 
          if subfile.endswith('.txt'):
              lines=zfile.open(subfile).read()
              print(lines)

Но код извлекает все файлы из нескольких папок и не отображает вывод , возможно, из-за условия it.Вместо того, чтобы читать конкретную папку и сохранять ее заранее, спасибо за помощь

1 Ответ

0 голосов
/ 01 марта 2019

Это произошло из-за того, что в zip-файле перечислены файлы следующим образом:
a / a1.txt a / a2.txt b / b1.txt b / b2.txt
Поэтому вам необходимо отделить файлы от каталога с помощью split('/')
Вы можете попробовать это:

import os
from zipfile import ZipFile
for file in os.listdir():
    if file.endswith('test.zip'):
        zfile = ZipFile(file);
        fnames = [f.filename for f in zfile.filelist];
        for subfile in fnames:
            dir_name = subfile.split('/')[0];
            if(dir_name == 'a'):
                if(subfile.endswith('.txt')):
                    lines = zfile.open(subfile).read();
                    print(lines);
...