首页 > 解决方案 > Python Zip 文件读取

问题描述

我是 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)

但是代码正在从多个文件夹中提取所有文件并且不显示任何输出可能是因为 if 条件 它。而不是特定的阅读文件夹并将其存储在此先感谢您的帮助

标签: pythonzip

解决方案


发生这种情况是因为 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);

推荐阅读