内存错误,python

0 投票
2 回答
2040 浏览
提问于 2025-04-16 06:42

我在处理一个大小为1.45GB的.xml文件时遇到了内存错误。为了排查问题,我尝试在一个更小的文件上运行代码,结果没有问题,所以代码里应该没有错误。这个代码的功能是打开一个xml文件,进行一些操作,然后把结果保存到一个新的txt文件里。我使用的是Windows 7 32位系统,内存是2GB,运行的是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

简单来说,你的电脑内存不够,无法读取这个文件。你应该把它分成几个小一点的XML文件,然后再去读取。

这个文件在小一点的时候能正常工作,说明你的代码没有问题,问题出在你的硬件上,内存不够用。

8

因为在内存中构建一个树形结构并不是一个好主意(而且考虑到你电脑的物理内存,这样做也不实际),你可以用两种方法来处理 lxml

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

你可以查看 这里 的文档,了解如何实现这些方法。

撰写回答