python - TypeError:需要一个类似字节的对象,而不是请求中的“str”有什么问题?
问题描述
import requests
funciona = "0"
nofunciona = "0"
url = 'http://testphp.vulnweb.com/userinfo.php'
values = {'uname': 'test', 'pass': 'test'}
r = requests.post(url, data=values)
if "John" in r.content:
funciona = 1
else:
nofunciona = 1
print(r.content)
print(funciona)
print(nofunciona)
Console: Traceback (most recent call last):
File "main.py", line 11, in <module>
if "John" in r.content:
TypeError: a bytes-like object is required, not 'str'
解决方案
这里的问题是,bytes
并且str
是两种不同的类型。
写入字节:
my_bytes = b'somebytes'
字符串是这样写的:
my_string = 'somestring'
所以"John"
在你的代码中是 astr
并且r.content
是类型bytes
。您需要匹配的类型才能使此布尔表达式起作用。
所以要么你需要说,b"John" in r.content
要么用适当的编解码器(如 UTF-8、ASCII 等)解码的内容的字符串版本在"John" in r.text
哪里。r.text