如何提取多个.zip文件?

时间:2019-05-18 17:56:59

标签: python zip data-extraction multiple-files

我正在尝试从某些.zip存档中提取多个文件。我的代码是:

import os
import zipfile

os.chdir('/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos')

for f in os.listdir("/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos"):
    if f.endswith(".zip"):
        z = zipfile.ZipFile(f, 'r')
        z.extractall(path = '/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos/dados')
        z.close()

但是,它仅提取第一个存档中的文件。我正在使用Python 3.6。怎么了?

1 个答案:

答案 0 :(得分:1)

我认为这种情况可能是一个严重的候选人...

发生的情况是,对于每个 .zip 文件,其所有成员均被提取,但是它们会覆盖从先前文件中提取的成员(当然,除了第一个 st )。因此,最后,您得到的是最后枚举的档案中的文件。
要解决此问题,您应该将每个 .zip 文件成员解压缩到一个单独的目录( .zip 文件名)中。

下面是一个示例(我也简化/整理了一下代码)。

code.py

#!/usr/bin/env python3

import os
import glob
import zipfile


dir_name_base = "/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos"

for arc_name in glob.iglob(os.path.join(dir_name_base, "*.zip")):
    arc_dir_name = os.path.splitext(os.path.basename(arc_name))[0]
    zf = zipfile.ZipFile(arc_name)
    zf.extractall(path=os.path.join(dir_name_base, "dados", arc_dir_name))
    z.close()