【问题标题】:Extracting the gz file using python ZIPFile [duplicate]使用python ZIPFile提取gz文件[重复]
【发布时间】: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.跨度>

标签: python python-2.7 zipfile


【解决方案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 上,注意驱动器号。
  • 当然。安全说明仍然相关。
猜你喜欢
  • 2014-12-22
  • 2021-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 2021-05-15
  • 1970-01-01
相关资源
最近更新 更多