使用Python 3.x代码合并两个文本文件交替行

时间:2017-02-27 07:28:18

标签: python-3.x merge alternate

我需要读取两个文本文件并将它们的交替行写入第三个文件。例如......

File1中
A1
A2

文件2
B1
B2

OUTPUTFILE
A1
B1
A2
B2

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

from itertools import zip_longest
with open(filename1) as f1, open(filename2) as f2, open(outfilename, 'w') as of:
    for lines in zip_longest(f1, f2):
        for line in lines:
            if line is not None: print(line, file=of, end='')

编辑:要在输入文件不以换行符结尾的情况下解决问题,请将print行更改为:

print(line.rstrip(), file=of)

答案 1 :(得分:0)

由于文件是可迭代的,因此它们可以zip一起编辑。由于我们希望支持两个输入文件中的行数不匹配的情况,因此我们使用zip_longest而不是内置zip。这种方法不需要将整个文件加载到内存中,因此它可以用于合并甚至非常大的文件而不会获得MemoryError

import itertools

with open('file1.txt') as src1, open('file2.txt', 'r') as src2, open('output.txt', 'w') as dst:
    for line_from_first, line_from_second in itertools.zip_longest(src1, src2):
        if line_from_first is not None:
            dst.write(line_from_first)
        if line_from_second is not None:
            dst.write(line_from_second)