【发布时间】:2020-02-10 09:17:03
【问题描述】:
我使用了 xml.etree.ElementTree 库,'for' 循环,理论上应该逐行读取。
不幸的是,这可能不是,因为在执行脚本后它会收到消息'Killed',所以脚本不会逐行读取。任何人都可以帮助我,提出一些建议。
我是初学者。
这是我的代码:
from xml.etree import ElementTree
file_name = 'input.xml'
full_file = os.path.abspath(os.path.join('data', file_name))
dom = ElementTree.parse(full_file)
root = dom.getroot()
for offer in root.findall('offer'):
for category in offer.findall('category'):
if category.text == 'f':
a = ElementTree.SubElement(offer, 'freedelivery')
a.text = 'true'
dom.write(output.xml) ```
【问题讨论】:
-
input.xml 文件很大吗?
-
@mzjn 是的,2gb。
-
ElementTree.parse(full_file)将整个文件读入内存。有一些方法可以避免这种情况,例如使用iterparse()方法。首先查看有关处理大型 XML 文件的类似问题:stackoverflow.com/search?q=%5Bpython%5D+xml+large+file
标签: python xml elementtree xml.etree