由于巨大的输入文件大小导致内存错误

Cha*_*pps 6 python file

当我使用以下代码读取文件时:

lines=file("data.txt").read().split("\n")
Run Code Online (Sandbox Code Playgroud)

我有以下错误

MemoryError
Run Code Online (Sandbox Code Playgroud)

文件大小是

ls -l
-rw-r--r-- 1 charlie charlie 1258467201 Sep 26 12:57 data.txt
Run Code Online (Sandbox Code Playgroud)

Tim*_*ker 18

显然文件太大而无法一次性读入内存.

为什么不使用:

with open("data.txt") as myfile:
    for line in myfile:
        do_something(line.rstrip("\n"))
Run Code Online (Sandbox Code Playgroud)

或者,如果您不使用Python 2.6及更高版本:

myfile = open("data.txt")
for line in myfile:
    do_something(line.rstrip("\n"))
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,您将获得一个可以像字符串列表一样对待的迭代器.

编辑:既然你的整个文件读入一个大的字符串,然后在新行上分裂它会删除的过程中换行的方式,我添加了一个.rstrip("\n")为了更好的模拟结果,以我的例子.