如何提取多个.zip文件?

2024-05-16 04:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一些.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()

但是,它只提取第一个归档文件中的文件。我使用的是python3.6。怎么了?在


Tags: 文件importhomeshiftosde档案zip
1条回答
网友
1楼 · 发布于 2024-05-16 04:42:31

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

对于每个.zip文件,它的所有成员都会被提取出来,但是它们会覆盖从上一个文件中提取的成员(当然,除了1st)。因此,在最后,您将得到最后枚举的归档文件中的文件。
要解决此问题,应将每个.zip文件成员解压到单独的目录中(文件名.zip)。在

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

代码.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()

相关问题 更多 >