在进行爬虫或者其他方式得到数据写入文件时会有编码不统一的问题,所以就一般都统一转换为Unicode编码。
>>> line2 = u'我爱祖国'
>>> fr.write(line2)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
fr.write(line2)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
为了避免上述错误,可以将line2编码成str类型,但是太麻烦,还需要先decode为Unicode然后再encode为str。
input文件(gbk, utf-8...) ----decode-----> unicode -------encode------> output文件(gbk, utf-8...)
使用codecs.open()代替这一繁琐操作
>>> import codecs
>>> fw = codecs.open('test1.txt','a','utf-8')
>>> fw.write(line2)
>>>
写入成功
文件的打开模式 | 含义 |
---|---|
‘r’ | 只读模式。如果文件不存在,返回异常FileNotFoundError,默认值; |
‘w’ | 覆盖写模式,文件不存在则创建,存在则完全覆盖; |
'x' | 创建写模式,文件不存在则创建,存在则返回异常FileExistError; |
‘a’ | 追加写模式,文件不存在则创建,存在则在文件最后追加内容; |
‘b’ | 二进制文件模式; |
‘t’ | 文本文件模式,默认值; |
'+' | 与r/w/x/a一同使用,在原功能的基础上增加同事读写的功能 |
网友评论