【问题标题】:Memory error due to the huge input file size由于输入文件过大导致的内存错误
【发布时间】: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

【问题讨论】:

  • 你正在阅读的文件大小是多少?

标签: python file


【解决方案1】:

显然文件太大,无法一次全部读入内存。

为什么不直接使用:

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") 以更好地模拟结果。

【讨论】:

    【解决方案2】:

    使用此代码逐行读取文件:

    for line in open('data.txt'):
        # work with line
    

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 2011-05-12
      • 2013-02-28
      相关资源
      最近更新 更多