[英]TypeError while trying to join two text files side by side
我试图使用zip函数将多个文本文件连接在一起,但我不断收到错误, TypeError: coercing to Unicode: need string or buffer, generator found
这是我的代码
filepaths = ['file1.txt', 'file2.txt', 'file3.txt']
with open('op.txt', 'w') as f:
temp = zip(*[open(fpath for fpath in filepaths)])
for lines in temp:
outfile.write('\t'.join(line.strip() for line in lines) + '\n')
请帮助我解决这个错误,我是使用zip&python编写脚本的新手
我认为您是要打开每个文件,而不是打开生成器。 您是否还打算使用f.write
代替outfile.write
?
这对我有用:
filepaths = ['file1.txt', 'file2.txt', 'file3.txt']
with open('op.txt', 'w') as f:
temp = zip(*[open(fpath) for fpath in filepaths])
for lines in temp:
f.write('\t'.join(line.strip() for line in lines) + '\n')
还要注意,这只会打印最短文件长度的行,因为这是zip
行为方式。 如果文件长度不同,并且您想查看所有其他行,则需要使用其他策略,例如:
from itertools import izip_longest
filepaths = ['file1.txt', 'file2.txt', 'file3.txt']
with open('op.txt', 'w') as f:
temp = izip_longest(*[open(fpath) for fpath in filepaths])
for lines in temp:
f.write('\t'.join(line.strip() for line in lines if line) + '\n')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.