Python 3.x 在python中打开大型gzip文件(~1gb)

Python 3.x 在python中打开大型gzip文件(~1gb),python-3.x,Python 3.x,我是python初学者,正在努力学习python。我写了几行代码来打开一个大的gzip文件(大小约1gb),并想提取一些内容,但是我遇到了与内存相关的错误。有人能告诉我如何用有限的内存打开gzip吗。我已经把一部分代码抛出了错误 import os import gzip with gzip.open("test.gz","rb") as peak: for line in peak: file_content = line.read().decode("utf-8

我是python初学者,正在努力学习python。我写了几行代码来打开一个大的gzip文件(大小约1gb),并想提取一些内容,但是我遇到了与内存相关的错误。有人能告诉我如何用有限的内存打开gzip吗。我已经把一部分代码抛出了错误

import os
import gzip

with gzip.open("test.gz","rb") as peak:
     for line in peak:
         file_content = line.read().decode("utf-8")             
         print(file_content)
错误:文件“/software/anaconda3/lib/python3.7/gzip.py”,第276行,已读 返回自。\u缓冲区读取(大小)


我试图重现您的问题,但我无法。使用
fallocate
我创建了一个大文件,然后gzip它,但在Python中没有遇到错误

$ fallocate -l 2G tempfile.img
$ gzip tempfile.img
$ ipython
>>> import gzip
>>> with gzip.open('tempfile.img.gz', 'rb') as fIn:
>>>    content = fIn.read()
如果遇到异常,它应该有一些名称,如
OSError
或更具体的名称。我的猜测是,您安装了32位Python,这将在GB范围内施加内存限制。所以线程提供了一种检查您运行的是32位还是64位的方法


如果您发布了异常名称或可复制的示例,那么我可以更新此答案。

您得到的错误到底是什么?感谢Andrew的快速回复。我已经更新了我的帖子确定你没有达到内存限制?考虑以块读取文件。您可以迭代从
gzip.open返回的fileObject。感谢@EliranAbdoo的回复!我试图迭代对象,但它抛出另一个错误'file_content=line.read()AttributeError:'bytes'对象没有属性'read'`@GyanPrakashMishra这是因为该行本身就是上下文。正如解释器所说,它是一个字节对象(因此只需删除
read()
,并直接对其进行解码。这是系统的体系结构,并且只安装了64位
>>导入平台>>>平台。体系结构()('64位','')>>
好的,我将尝试重现该示例