使用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 提取封闭的 zip

使用 python zipfile 提取 zip 子文件夹中的文件

从 Python3 中的 .zip 文件中提取和读取 [重复]

在 zipfile 中递归列出所有目录而不在 python 中提取

怎么从zip里提取文件 Python

Python:使用zipfile库将子文件夹解压缩到主文件夹[重复]