我有一个如下的原始文件(fo.log):
title1 title2 title3
o11 o12 o13
o21 o22 o23
o31 o32 o33
以及如下所示的目标文件(fd.log):
d11 d12
d21 d22
d31 d32
两个文件的行数相同(可能是数百万行),但原始文件的标题行除外。考虑到内存使用情况,我不想将所有行都读入内存。
处理完我的脚本后,我希望目标文件(fd.log)如下所示:
d11 d12 o13
d21 d22 o23
d31 d32 o33
这意味着我获取了每个原始文件行的最后信息并将其附加到相应的目标行。
从一个文件到另一个文件的行之间的对应只是行的位置,与上面的信息无关。
我能做的最接近的脚本写在下面,它正确地打印了我想要的信息。
from pathlib import Path
file_from = Path("path-to-origin-file/fo.log").open()
file_to = Path("path-to-destination-file/fd.log").open()
# create an enumerator to iterate over origin file lines
eft = enumerate(file_to)
# skip the first line with titles
next(eft)
for line_counter,line_to in eft:
print(' '.join([
line_to.rstrip('\n'),
file_from.readline().split()[2]]))
file_from.close()
file_to.close()