类型错误:类似字节的对象是必需的,而不是'str'在尝试使用python [duplicate]从网页获取数据时

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我正在讲课程并复制讲座视频中写的代码,但不知何故它不起作用。代码尝试从网页检索数据但出现类型错误。

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'
python bash http
1个回答
2
投票

只是替换

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'...'
© www.soinside.com 2019 - 2024. All rights reserved.