【问题标题】:MemoryError, python内存错误,蟒蛇
【发布时间】:2010-11-07 15:39:15
【问题描述】:

处理 .xml 文件 = 1,45 Gb 时出现 MemoryError。我试图在一个较小的文件上运行它并且它可以工作,所以代码中不应该有任何错误。代码本身意味着打开一个 xml 文件,在里面做一些事情并将其保存回一个新的 txt 文件。我运行 Win7 x86、2 Gb RAM、Python 2.6

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    openfile('ukwiki-latest-pages-articles.xml')
  File "C:\Users\Vof Freeman\Desktop\Python\test.py", line 7, in openfile
    contents = F.read()
  File "C:\Python26\lib\codecs.py", line 666, in read
    return self.reader.read(size)
  File "C:\Python26\lib\codecs.py", line 466, in read
    newdata = self.stream.read()
MemoryError

【问题讨论】:

    标签: python xml error-handling


    【解决方案1】:

    由于构建内存树是不可取的(在您的情况下也不实用,考虑到您拥有的物理内存量),您可以使用两种技术lxml

    • 提供目标解析器类
    • 使用iterparse 方法

    请参阅文档here 了解如何做到这一点。

    【讨论】:

      【解决方案2】:

      简单地说,您没有足够的 RAM 来读取此文件。您应该将其拆分为较小的 XML 文件并以这种方式读取。

      它在较小的文件上工作的事实告诉我,您的代码没有任何问题,只是您的硬件无法处理它。

      【讨论】:

      • 如果我拆分它,我如何在输出中获取单个 txt 文件?
      • 在读取每个 XML 文件时保持打开同一个文件对象,并在整个程序中继续写入它,而不是关闭文件并打开一个新文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 2016-10-17
      • 2017-02-24
      • 2019-01-08
      • 1970-01-01
      相关资源
      最近更新 更多