python codecs.open() 读写文件

with codecs.open() as f 相比 with open () as f

      python读写文件估计都用open内置函数。

      打开文件的方式一般为:with open(file_name,access_mode = 'r',buffering = -1) as f。file_name就是文件的路径加文件名字,不加路径则文件会存放在python程序的路径下,

access_mode就是操作文件的模式,主要有r,w,rb,wb等,细节网上一大堆,buffering = -1是用于指示访问文件所采用的缓存方式。0表示不缓存;1表示只缓存一行,n代表缓存n行。如果不提供或为负数,则代表使用系统默认的缓存机制。

      打开以后就是写和读的操作。但是用open方法打开会有一些问题。open打开文件只能写入str类型,不管字符串是什么编码方式。

这样是完全可以的。但是有时候我们爬虫或者其他方式得到一些数据写入文件时会有编码不统一的问题,所以就一般都统一转换为unicode。此时写入open方式打开的文件就有问题了。例如

>>> line= u'我'
>>> f.write(line)


UnicodeEncodeError: 'ascii' codec can't encode characters

怎么办,我们可以将上面的line编码成str类型,但是太麻烦。我们要把得到的东西先decode为unicode再encode为str。。。

input文件(gbk, utf-8...)   ----decode----->   unicode  -------encode------> output文件(gbk, utf-8...)

代替这繁琐的操作就是codecs.open,例如

>>> import codecs
>>> with codecs.open('test1.txt','a','utf-8') as f:
>>>        fw.write(line)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值