【发布时间】:2020-01-09 21:32:17
【问题描述】:
我有大约 1000 个 XML 文件,每个文件大小为 250 MB。我需要从中提取一些数据并写入 CSV。 不能有任何重复的条目。
我有一个配备 4GB RAM 和 AMD A8 处理器的系统。
我已经在这里浏览了一些以前的帖子,但他们似乎没有回答我的问题。
我已经用 Python 编写了代码,并在一个示例 XML 上对其进行了测试,它运行良好。
但是当我在所有文件上使用它并且不得不中途终止进程时,它非常慢(每个文件几乎 15 分钟)。
加快流程的最佳解决方案是什么?
这是代码
path='data/*.xml'
t=[]
for fname in glob.glob(path):
print('Parsing ',fname)
tree=ET.parse(fname)
root=tree.getroot()
x=root.findall('//Article/AuthorList//Author')
for child in x:
try:
lastName=child.find('LastName').text
except AttributeError:
lastName=''
try:
foreName=child.find('ForeName').text
except AttributeError:
foreName=''
t.append((lastName,foreName))
print('Parsed ',fname)
t=set(t)
我想要最快的方法来获取条目没有任何重复值。 (也许存储在某个数据库中而不是变量 t 中,由于更多的空闲 RAM,将每个条目存储在数据库中会加快速度吗?-无论我需要哪种方法)
【问题讨论】:
-
对于速度问题检查这个答案:stackoverflow.com/questions/18507481/…
-
如果您想要唯一的条目,请使用集合或字典而不是列表。您是否尝试过 lxml,因为它可能会更快?
标签: python xml python-3.x csv