我有一个巨大的XML文件(大约1TB),用一个长行编写。 我希望提取它的一些功能,并认为只要我在每个标记之后将长行拆分为新行,就更容易这样做。
文件构建如下:
<textA textB textC> <textD textE textF> <textG textH textI>
我现在开始用这段代码破解长行:
eof = 0
while eof == 0:
character = historyfile.read(1)
if character != ">" and character != "":
output.write(character)
if character == ">":
output.write('>' + '\n')
if character == "":
eof = 1
不幸的是,此代码将需要大约12天的时间来处理整个文件。 我现在正在考虑是否有更快的方法可以以类似的方式处理文件至少两倍。
我的第一个想法是,可能只需解析文件并替换结束标记,如下所示:
for line in infile:
line.replace('>', '>' + '\n')
您认为这种方法会更快吗?我会自己尝试,但我已经有第一个代码运行了一天半;)
答案 0 :(得分:1)
如果您尝试逐行读取文件,这只是1TB的一行,您将获得相同长度的str
变量。我不知道实现细节,但我猜,在读完之前很久就会提出MemoryError
。