2017-06-29 97 views
0

我想加入多個文本文件一起使用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

+0

我想你想'[開(fpath)在文件路徑fpath]' 。 –

回答

0

我想你打算打開每個文件,而不是生成器。你是否也想用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')