1. open()
open()
以二进制流的形式读入的文件,所以读入后需要在read()
和每次readline()
时,做.decode('utf-8')
等。
但.decode('utf-8')
在Python 3
中的 unicode 字符串中不再存在,所以会导致代码不兼容。
2. codecs.open()
codecs.open()
是网上最流行的多编码读写包,codecs.open(FILE_NAME, 'r', 'utf-8')
,之后读入的都转为unicode
之前最常用这个包,但是最近遇到一些问题,比如遇到\r\n
,^\
(换页符)等,读入会自动产生一些空行等,stackoverflow 上的一些问题:
https://stackoverflow.com/questions/12330522/reading-a-file-without-newlines
3. io.open()
io.open()
是Python 2.6
之后新加入的一个为Python 3
写的包,暂时没有2
的问题,用io.open(FILE_NAME, 'r', encoding='utf-8')
但是,遇到一个特有的问题是,fout.write()
时,由于Python 3
的特点,必须输出unicode
。所以可能需要fout.write(string+u'\n')