当我使用以下代码读取文件时:
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")为了更好的模拟结果,以我的例子.