这个问题在这里已有答案:
我正在讲课程并复制讲座视频中写的代码,但不知何故它不起作用。代码尝试从网页检索数据但出现类型错误。
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('www.py4inf.com', 80))
mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')
while True:
data = mysock.recv(512)
if(len(data)< 1):
break
print(data)
mysock.close()
错误是这样的:
Traceback (most recent call last):
File "cheese.py", line 4, in <module>
mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')
TypeError: a bytes-like object is required, not 'str'
只是替换
mysock.send('GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')
同
mysock.send(b'GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')
在Python 3中,字符串用Unicode编码,发送需要类似字节的对象。
这可以通过简单地将b
放在你的字符串前面来实现,即
b'...'