python提示错误TypeError: write() argument must be str, not bytes
还是在学习《Machine Learning in Action》中决策树一章中,在学习决策树存储过程中先是提示错误TypeError: write() argument must be str, not bytes,看错误信息是说write()函数的参数必须为str,而不是字节bytes。不明白,看源码哪里提示错误了,pickle.dump(inputTree,fw)这一条语句编译时出错了,那么我们先看下pickle.dump()的用法
从倒数第二句可以看出,我们的问题出在fw这个变量上,也就是fw = open(filename,'w')这条语句有问题。也就是说fw这个变量的类型应该是bytes的,所以可以将'w'改为'wb',修改后再编译成功,同样的原理,提示UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 0: illegal multibyte sequence错误时,是由于之前保存的txt文件是用二进制写入的所以在读取时也应该用二进制,即读文件中的fr = open(filename)应该改为fr = open(filename, 'rb')。OK,问题解决!测试下:
成功!