繁体   English   中英

尝试并排连接两个文本文件时出现TypeError

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM