用python按行合并两个文件

今天需要用fastText做一个文本分类器,默认的训练文件的每一行格式是 “__label__classA sentence” ,目前有两个文件,第一个文件是所有的句子(如Afghanistan looks so different from here in America .),第二个文件是对应的label(如classB),需要把这两个文件整合成一个文件(如__label__classB Afghanistan looks so different from here in America .),具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import codecs
import os

txtin = "./data/valid.en"
classin = "./data/valid.binary.class"
txtout = "./data/valid.la.en"

fclass = codecs.open(classin,'r','utf-8')
fout = codecs.open(txtout,'w','utf-8')

with codecs.open(txtin,'r','utf-8') as ftxt:
for line in ftxt:
strt = "__label__"+fclass.readline().strip('\r\n')+' '+line
fout.write(strt)

fclass.close()
fout.close()

其中,为了解决文本中编码不统一带来的乱码问题,引入codecs包,设定以utf-8格式打开。为了解决同时打开两个文件的读写问题,先打开相应的文件,采用for循环,由.readline()函数自动循环。