【发布时间】:2010-03-07 12:38:30
【问题描述】:
当我使用以下代码读取文件时:
lines=file("data.txt").read().split("\n")
我有以下错误
MemoryError
文件大小为
ls -l
-rw-r--r-- 1 charlie charlie 1258467201 Sep 26 12:57 data.txt
【问题讨论】:
-
你正在阅读的文件大小是多少?
当我使用以下代码读取文件时:
lines=file("data.txt").read().split("\n")
我有以下错误
MemoryError
文件大小为
ls -l
-rw-r--r-- 1 charlie charlie 1258467201 Sep 26 12:57 data.txt
【问题讨论】:
显然文件太大,无法一次全部读入内存。
为什么不直接使用:
with open("data.txt") as myfile:
for line in myfile:
do_something(line.rstrip("\n"))
或者,如果您使用的不是 Python 2.6 及更高版本:
myfile = open("data.txt")
for line in myfile:
do_something(line.rstrip("\n"))
在这两种情况下,您都会得到一个可以像字符串列表一样处理的迭代器。
编辑:由于您将整个文件读入一个大字符串然后将其拆分为换行符的方式将删除该过程中的换行符,因此我在示例中添加了 .rstrip("\n") 以更好地模拟结果。
【讨论】:
使用此代码逐行读取文件:
for line in open('data.txt'):
# work with line
【讨论】: