我有两个这样的 txt 文件:txt1:
Foo
Foo
Foo
Foo
txt2:
Bar
Bar
Bar
Bar
我怎样才能将它们连接到一个新文件的左侧和右侧让我们这样说:
Bar Foo
Bar Foo
Bar Foo
Bar Foo
我尝试了以下方法:
folder = ['/Users/user/Desktop/merge1.txt', '/Users/user/Desktop/merge2.txt']
with open('/Users/user/Desktop/merged.txt', 'w') as outfile:
for file in folder:
with open(file) as newfile:
for line in newfile:
outfile.write(line)
使用itertools.izip
合并两个文件中的行,像这样
from itertools import izip
with open('res.txt', 'w') as res, open('in1.txt') as f1, open('in2.txt') as f2:
for line1, line2 in izip(f1, f2):
res.write("{} {}\n".format(line1.rstrip(), line2.rstrip()))
注意:此解决方案将只从两个文件写入行,直到其中一个文件耗尽。例如,如果第二个文件包含 1000 行而第一个文件只有 2 行,则每个文件中只有两行被复制到结果中。如果即使在最短文件耗尽后你也想要最长文件中的行,你可以使用 itertools.izip_longest
, 像这样
from itertools import izip_longest
with open('res.txt', 'w') as res, open('in1.txt') as f1, open('in2.txt') as f2:
for line1, line2 in izip_longest(f1, f2, fillvalue=""):
res.write("{} {}\n".format(line1.rstrip(), line2.rstrip()))
在这种情况下,即使较小的文件耗尽,较长文件中的行仍将被复制,fillvalue
将用于较短文件中的行。
我是一名优秀的程序员,十分优秀!