【发布时间】:2015-04-22 00:21:07
【问题描述】:
我必须处理一个大型 XML 文档,我有几个数据清理和操作任务要做。
下面的基本代码使用xml.etree.ElementTree。
由于文件非常大(大约 2Gb),我希望能够定期打印我的 tagCounts 累加器变量的值。
使用 ElementTree 每 3 分钟打印一次 self.tagCounts 的内容来实现计时器的最简洁方法是什么?
谢谢
import xml.etree.ElementTree as ET
import pprint
class TagCounter:
def __init__(self):
self.tagCounts = {}
def start(self, tag, attrib):
if tag in self.tagCounts:
self.tagCounts[tag] += 1
else:
self.tagCounts[tag] = 1
def end(self, tag):
pass
def data(self, data):
pass
def close(self):
return self.tagCounts
def count_tags(filename):
parser = ET.XMLParser(target = TagCounter())
with open(filename, mode='r') as f:
for line in f:
parser.feed(line)
t = parser.close()
return t
if __name__ == "__main__":
tags = count_tags("file.osm")
pprint.pprint(tags)
【问题讨论】:
标签: python xml multithreading python-2.7 python-3.x