我有好几个文件要迭代,其中一些有几百万行长。一个文件的大小可以超过500 MB。我需要通过搜索并用'|'
字符串替换'| |'
字符串来准备它们。但是,下面的代码运行到“内存错误”。如何重做代码,以搜索和替换文件的行,以节省内存?有什么想法吗?
这不是逐行读取大文件,而是逐行替换字符串,避免将列表转换为字符串的问题,反之亦然。你知道吗
import os
didi = self.lineEdit.text()
for filename in os.listdir(didi):
if filename.endswith(".txt"):
filepath = os.path.join(didi, filename)
with open(filepath, errors='ignore') as file:
s = file.read()
s = s.replace('| |', '|')
with open(filepath, "w") as file:
file.write(s)
请尝试以下代码:
此代码在内存中一次读取一行。你知道吗
它将结果存储在
buffer
中,一次最多包含chunk_size
行,然后将结果保存到文件并清除buffer
。一直到文件的结尾。在读取循环结束时,如果缓冲区包含行,则将其写入磁盘。你知道吗这样,除了检查内存中的行数外,还可以检查磁盘写入数。每次读一行时都写入文件可能不是一个好主意,因为
chunk_size
太大了。由您自己来找到适合您的问题的chunk_size
值。你知道吗注意:您可以使用
open()
缓冲参数来获得相同的结果。在documentation中查找所有内容。但逻辑非常相似。你知道吗试着逐行读取文件,而不是一大块。即
相关问题 更多 >
编程相关推荐