Python-访问.ZIP文件中的多个嵌套子文件夹

时间:2020-10-09 19:08:34

标签: python zip subdirectory

很抱歉,是否曾经有人问过这个问题,但是我似乎找不到对此的任何引用,而且到目前为止,我编写的代码仍然无效。

假设我有一个名为ABC.ZIP的zip文件。压缩文件中包含子文件夹,例如“ 20201007”,“ 20201008”,“ 20201009”。在这些子文件夹中的每个子文件夹中,都有更多子文件夹,例如“ Reports001”,“ Reports002”,“ Reports003”。每个这些报告文件夹都包含我要搜索其文件名并仅提取某些符合条件的文件的文件。

ABC.ZIP> 20201007> 报告1> 文件| 报告2> 文件| 报告3> 文件| 20201008> 报告1> 文件| 等。

在我已经调用ZipObject.namelist()之后,如何通过python访问zip文件中的子文件夹?到目前为止,这是我尝试过的事情:

with ZipFile(path + "\\" + myZipFileName, 'r') as zipObject:
    listOfFolderNames = zipObject.namelist()
    for folderName in listOfFolderNames:
        with ZipFile(path + "\\" + myZipFileName + "\\" + foldername, 'r') as ZipObject1
        listofSubfolderNames1 = ZipObject.namelist()

带有ZipFile(path + "\\" + myZipFileName + "\\" + foldername, 'r') as ZipObject1的行告诉我没有名为“ C:\ zipfiles \ ABC.ZIP \ 20201007”的文件夹

我已经尝试了os.walk和listdir,但是同样,我似乎无法引用zip文件中的子文件夹。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

以下程序可用于从zip文件中仅读取.txt文件:

with ZipFile ('<your zip file>','r')as zipObject:
    for i in zipObject.infolist():
        if not i.is_dir() and i.filename.endswith('.txt'):
            with zipObject.open((i.filename), 'r') as f:
                print(f.read())

您可以尝试类似的方法。