繁体   English   中英

如何提取多个 .zip 文件?

[英]How can I extract multiple .zip 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。 怎么了?

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

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

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

代码00.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM