出错原因
今天在用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)
哒哒哒
程序成功运行了。