python - 如何提取多个 .zip 文件?
问题描述
我正在尝试从一些 .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文件名)中。
下面是一个示例(我还稍微简化/清理了您的代码)。
代码.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))
zf.close() # close file after extraction is completed
推荐阅读
- node.js - 如何在节点 js 中捕获 redis 查询的输出?
- python-3.x - 如何将一组标记化句子提供给 Word2vec 以获取嵌入?
- python - 印尼语情绪分析
- c# - 使用 httpclient 限制使用带宽进行下载
- python - 熊猫在日期列的 7 天范围内逐行分组
- python-3.x - Docker 中的 Django Postgres 连接重置
- yolov4 - 训练自定义 YOLO 模型
- node.js - transporter.sendMail 不是一个函数,我用 node.js 和 nodemailer
- reactjs - 如何使用 redux-form 库从 react-dropzone 插件中获取 base64
- common-lisp - Mito 和 SXQL:用 select-dao 计算?