使用python ZIPFile提取gz文件[重复]
Posted
技术标签:
【中文标题】使用python ZIPFile提取gz文件[重复]【英文标题】:Extracting the gz file using python ZIPFile [duplicate] 【发布时间】:2018-07-04 10:02:00 【问题描述】:我正在使用 Python 2.7
我有以下代码
file = ZipFile("D:\Project\text.evt.gz")
它给出以下错误 “BadZipfile:文件不是 zip 文件”
在尝试手动提取文件时,我收到以下错误 “数据意外结束”
是否可以在 Python 中不考虑此错误而提取 evt 文件?
基本上我想将压缩后的 evt 文件提取到特定的目标文件夹
【问题讨论】:
python -c "with open('D:\Project\text.evt.gz', 'rb') as f: print(f.read1(2)) output is pk.跨度> 【参考方案1】:文件扩展名“gz”表明这是一个 gzip 文件,与 zip 文件不同。试试 gzip 模块。
#!/usr/bin/env python3
import gzip
import sys
with gzip.open('/Some/file/somewhere.gz', 'rb') as f:
file_content = f.read()
for i in file_content:
print(chr(i),file=sys.stdout, end='')
如果您需要完全通用的 7zip 系统调用可能更有意义,并且您不必操作内容。
【讨论】:
gzip 不提供将提取的文件复制到不同位置的提取方法。知道如何使用 gzip 将提取的 evt 文件复制到不同的位置吗? @user3138864,gzip 模块为您提供了一个通用的类文件对象;您可以使用shutil.copyfileobj()
将其复制到 Python 上的任何其他文件对象(不需要足够的内存来将整个内容存储在 RAM 中,就像目前的答案一样)。
@HackSaw,我建议不要使用 7zip。它在 Linux 上并未广泛使用,并且安全漏洞......并非闻所未闻(尤其是在 rar 模块中——当然,OP 并没有打算在此处使用该模块,但事实并非如此'这意味着它不能通过精心设计的输入文件来选择)。
OP 在 Windows 上,注意驱动器号。
当然。安全说明仍然相关。以上是关于使用python ZIPFile提取gz文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 python zipfile 提取 zip 子文件夹中的文件
从 Python3 中的 .zip 文件中提取和读取 [重复]