背景
最近原来运行的好好的代码突然异常了,检查下日志,发现有如下的报错:
1 | Traceback (most recent call last): |
思路
从报错上看,是由于类型不匹配导致的。
在用python发请求时,response.status_code返回的是int类型的,通过用来判断返回是否正常:
1 | if response.status_code == 200: |
所以在输出字符串的时候,前面加了str()用来前强制转换成str类型。
那么问题应该就出在response.body上了,正常情况response.body返回应该是字符串,但根据提示,实际上是一个bytes类型数据。
对实际程序进行调试看下输出:

果然body输出变成了bytes类型。
结论
定位了问题,那么该如何转换呢?
通过
str()转换上面返回是个空值,那么我们也强制转换看下:

1
2
3body = b''
str(body)
"b''"强制转换之后,虽然变成了
str类型,但会有前缀b'',虽然不会报错,但明显不是我们想要的。通过
decode()转换那么编码问题,就尝试用编码解码来解决了。我们用
decode()试下:
1
2body.decode()
''这次就对了。
至于请求的返回结果以前是str类型,现在变成了bytes类型,这就不纠结了,毕竟网络瞬息万变,还是要多用多总结。
