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

Python 3.x 使用Python 3.x代码交替合并两个文本文件,python-3.x,merge,alternate,Python 3.x,Merge,Alternate,我需要读取两个文本文件,并将它们的交替行写入第三个文件。例如 文件1 A1 A2 文件2 B1 B2 输出文件 A1 B1 A2 B2 提前感谢您的帮助 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

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

文件1
A1
A2

文件2
B1
B2

输出文件
A1
B1
A2
B2

提前感谢您的帮助

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(line.rstrip(), file=of)
编辑:若要解决输入文件未以换行符结尾的问题,请将
打印
行更改为:

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

因为文件是可编辑的,所以它们可以
zip
。由于我们希望支持两个输入文件中的行数不匹配的情况,因此我们使用
zip\u longest
而不是内置的
zip
。这种方法不需要将整个文件加载到内存中,因此即使是非常大的文件也可以使用它来合并,而不需要获得
内存错误

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)

因为文件是可编辑的,所以它们可以
zip
。由于我们希望支持两个输入文件中的行数不匹配的情况,因此我们使用
zip\u longest
而不是内置的
zip
。这种方法不需要将整个文件加载到内存中,因此即使是非常大的文件也可以使用它来合并,而不需要获得
内存错误

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)

代码一直工作到最后一行。输出文件的结果是A1在第一行,B1在第二行,A2B2在第三行。我们如何将最后一行(B2)插入最后第四行?尽管@shx2给了我他的代码的解决方案,并且它工作了…我仍然对您的代码感兴趣,因为它不会将整个文件加载到内存中。当你有机会,我会对你的解决方案感兴趣的最后一行,而不是连接到下一个最后一行。谢谢我只是不修改读取行——如果其中一个文件的最后一行不是以换行符结尾,我不会显式地附加它。通过检查行字符串(
行[-1]
)的最后一个字符是否为换行符,可以很容易地修复此问题。代码在最后一行之前运行良好。输出文件的结果是A1在第一行,B1在第二行,A2B2在第三行。我们如何将最后一行(B2)插入最后第四行?尽管@shx2给了我他的代码的解决方案,并且它工作了…我仍然对您的代码感兴趣,因为它不会将整个文件加载到内存中。当你有机会,我会对你的解决方案感兴趣的最后一行,而不是连接到下一个最后一行。谢谢我只是不修改读取行——如果其中一个文件的最后一行不是以换行符结尾,我不会显式地附加它。通过检查行字符串(
行[-1]
)的最后一个字符是否为换行符,可以很容易地修复此问题。代码在最后一行之前运行良好。输出文件的结果是A1在第一行,B1在第二行,A2B2在第三行。如何将最后一行(B2)插入最后第四行?代码在最后一行之前运行良好。输出文件的结果是A1在第一行,B1在第二行,A2B2在第三行。如何将最后一行(B2)插入最后第四行?