gpt4 book ai didi

python - 在 python 中更改和解析大型 XML 文件的内存有效方法

转载 作者:行者123 更新时间:2023-12-01 04:44:13 24 4
gpt4 key购买 nike

我想用 python 解析一个大型 XML 文件(25 GB),并更改它的一些元素。

我尝试了 xml.etree 中的 ElementTree,但第一步(ElementTree.parse)花费了太多时间。

我在某处读到 SAX 速度很快,并且不会将整个文件加载到内存中,但它只是用于解析而不是修改。

“iterparse”也应该只用于解析而不是修改。

还有其他快速且高效内存的选择吗?

最佳答案

这里对你来说重要的是你需要一个流解析器,这就是 sax。 (Python 中有一个内置的 sax 实现,lxml 提供了一个。)问题是,由于您试图修改 xml 文件,因此在读取 xml 文件时必须重写它。

XML 文件是一个文本文件,您无法在不重写整个文本文件的情况下更改文本文件中间的某些数据(除非数据大小完全相同,但这种情况不太可能发生)

您可以使用 SAX 读入每个元素,并注册一个事件以在读取和修改每个元素后写回每个元素。如果您的更改非常简单,那么甚至不用费心进行 XML 解析,只需将文本匹配到您要查找的内容,速度可能会更快。

如果您正在处理这么大的 XML 文件,那么我想说您不应该使用 XML 文件,而应该使用数据库。

您在这里遇到的问题与大型机上的 Cobol 程序员在处理基于文件的数据时遇到的问题相同

关于python - 在 python 中更改和解析大型 XML 文件的内存有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com