我需要读取两个文本文件并将它们的交替行写入第三个文件。例如......
File1中
A1
A2
文件2
B1
B2
OUTPUTFILE
A1
B1
A2
B2
提前感谢您的帮助!
答案 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)