猿问

Python以二进制模式写文件如何换行?

scrapy通过Pipeline保存数据(txt格式)时,出现了有些数据'gbk'codeccan'tencodecharacter,代码如下。
classTxtPipeline(object):
defprocess_item(self,item,spider):
path=os.getcwd()
filename=path+'\data\%s.txt'%item['classic']
withopen(filename,'a')asf:
f.write(item['title']+'\n')
f.write(item['time']+'\n')
f.write(item['text']+'\n')
...
于是我就用二进制追加的模式,来保存数据,并统一成utf8,修改如是:
withopen(path,'ab')asf:
f.write(item['title'].encode('utf-8',errors='ignore')+'\n')
但是'\n'又不是bite,所以改成了b'\n',但是这样做却不能换行。问题如下:
像上面的问题该如何解决?
如果不以二进制的方式,如何解决编码问题?(注:item项都是字符串)
学艺不精,麻烦各位大佬指点一二了!!!
慕森王
浏览 1985回答 2
2回答

明月笑刀无情

withopen(path,'w')asf:为什么不用w直接写呢?这个uft8就可以直接写进txt文件了啊,为啥要用二进制?

慕村225694

withopen(file,mode='a',encoding='utf-8')asf:追加模式不会删除一切写入的哟如果要写入的字符一开始是utf-8编码,否则就要转一下编码打开文件的时候指定编码就好了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答