python - 如何提取多个 .zip 文件?

标签 python zip data-extraction

我正在尝试从一些 .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。怎么了?

最佳答案

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

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

下面是一个示例(我还简化/清理了您的代码)。

code00.py:

#!/usr/bin/env python3

import os
import glob
import zipfile


dir_name_base = r"/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))
    zf.close()  # Close file after extraction is completed

关于python - 如何提取多个 .zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56201516/

相关文章:

zip - 如何从命令行创建文件以测试 Zip Slip 漏洞

python - 递归解压缩文件,将(文件名,提取的内容)存储在字典中

python - 用拥抱和女服务员记录

python - 通过任意映射在列表中查找等价词

ruby-on-rails - 如何从 URL 下载每个 zip 文件并使用 Rails 解压

java - 使用 Java 从 JSON 中提取数据

r - 通过 Google Playstore 在 R 中进行网页抓取

python - 解析 ad-hoc 树

Python - 如何查询定义方法的类?

xml - 用户评论的数据提取