gpt4 book ai didi

python - 从大文件(~2.5GB)读取并存储到 python 列表时出现 MemoryError

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:25 27 4
gpt4 key购买 nike

我正在尝试使用 python 处理一个非常大的文件中的行。我从 stackoverflow 中以前回答的许多问题中找到了读取大文件的最佳方法。我选择了其中一种方法并进行了如下检查:

fIn = fopen(fileName,'rU')
fOut = fopen(fileName1, 'w')
while 1:
lines = fIn.readlines(100000)
if not lines:
break
for line in lines :
fOut.write(line)

这就像变魔术一样有效,我能够成功地从一个文件中读取行并将其写入另一个文件,并且没有遇到任何内存错误。

但我现在想做的不是将从一个文件读取的行写入另一个文件,而是想将它们存储在一个列表中,然后在列表上做进一步的处理。我将行存储在列表中的代码如下所示:

fIn = fopen(fileName,'rU')
fOut = fopen(fileName1, 'w')
d = []
while 1:
lines = fIn.readlines(100000)
if not lines:
break
for line in lines :
d.append(line)

此代码正在创建 MemoryError,提示中打印的堆栈跟踪显示在此错误之前执行的最后一行是 d.append(line) 行。因此,将大量数据写入列表肯定会导致错误。这个错误是在进入程序几秒钟后引起的。所以它能够正确地写入一定大小的数据,然后发现一些内存错误。

我想知道什么是在 python 列表中存储大文件的最佳方法,因此不会遇到 MemoryError 错误。

最佳答案

processing can be done line by line ,最好的选择是像这样遍历文件对象

with open(fileName, 'rU') as fIn:
for line in fIn:
process_line(line)

并将所有处理逻辑移至process_line 函数。这将是最佳选择,因为它一次只能为您提供一条线路。因此,您不会阻塞内存。

关于python - 从大文件(~2.5GB)读取并存储到 python 列表时出现 MemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com