1.在运行程序时报错:
TypeError: a bytes-like object is required, not ‘str’
2.解决方案
3.原因
问题时 Python2 字符串有 str 和 unicode 两种类型;而 Python3 字符串仅有 str 类型。而Python2 和 Python3 的 str 类型是不同的;Python2中,str 类型和 bytes 类型是同一种类型。以下语句在python2中等效:
a = 'ab'
a = b'ab'
Python3中,str 类型和 unicode 类型是同一种类型。以下语句在python3中等效:
a = 'ab'
a = u'ab'
看下 Python2 和 Python3 中字符串类型的对应关系:
Python2 unicode 类似于 Python3 str
Python2 str 类似于 Python3 bytes
4.Python bytes 和 str 两种类型可以通过函数 encode() 和 decode() 相互转换
str→bytes:encode()方法:str 通过 encode() 方法可以转换为 bytes。
bytes→str:decode()方法: 如果我们从网络或磁盘上读取了字节流,那么读到的数据就是 bytes。要把 bytes 变为 str,就需要用 decode() 方法。