MemoryError,python

时间:2010-11-07 15:39:16

标签: python xml error-handling

处理.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

2 个答案:

答案 0 :(得分:8)

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

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

请参阅文档here以了解如何执行此操作。

答案 1 :(得分:0)

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

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