鍍金池/ 問答/人工智能  Python/ Python以二進制模式寫文件如何換行?

Python以二進制模式寫文件如何換行?

scrapy通過Pipeline保存數據(txt格式)時,出現了有些數據 'gbk' codec can't encode character,代碼如下。

class TxtPipeline(object):
    def process_item(self,item,spider):
        path=os.getcwd()
        filename = path + '\data\%s.txt'%item['classic']
        with open(filename, 'a')as f:
            f.write(item['title'] + '\n')
            f.write(item['time'] + '\n')
            f.write(item['text'] + '\n')
        ...

于是我就用二進制追加的模式,來保存數據,并統(tǒng)一成utf8,修改如是:

with open(path, 'ab')as f:
        f.write(item['title'].encode('utf-8', errors='ignore')+'\n')
   

但是'\n'又不是bite,所以改成了b'\n',但是這樣做卻不能換行。
問題如下:

  1. 像上面的問題該如何解決?
  2. 如果不以二進制的方式,如何解決編碼問題?(注:item項都是字符串

學藝不精,麻煩各位大佬指點一二了?。。?/p>

回答
編輯回答
莫小染
with open(file,mode='a',encoding='utf-8') as f:

追加模式不會刪除一切寫入的喲
如果要寫入的字符一開始是utf-8編碼,否則就要轉一下編碼
打開文件的時候指定編碼就好了

2017年3月19日 12:39
編輯回答
雨蝶
with open(path, 'w')as f:

為什么不用w直接寫呢?這個uft8就可以直接寫進txt文件了啊,為啥要用二進制?

2017年5月9日 16:36