出现TypeError: write() argument must be str, not bytes原因及解决方案

python3文件操作出错及解决

出错原因

今天在用python写爬虫写入文件时,执行写入文件操作:

    with open(filename, "w") as f:
        f.write(html)

出现以下错误:

TypeError: write() argument must be str, not bytes

出错原因:
经过查找资料发现,原来在python2中可以这样随机的写入二进制文件,但是在python3中却不可以。

python3给open函数添加了名为encoding的新参数,而这个新参数的默认值却是‘utf-8’。这样在文件句柄上进行read和write操作时,系统就要求开发者必须传入包含unicode字符的实例,而不接受包含二进制数据的bytes实例。

解决方案

将文件操作中的(“w”)改成(“wb”),原来以写方式打开文件,现在改为了以二进制模式打开文件,这种方法同时适配python2和python3。
修改结果:

今天在用python写爬虫写入文件时,执行写入文件操作:

    with open(filename, "wb") as f:
        f.write(html)

哒哒哒
程序成功运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值