Convert input () to bytes in Python 3?
本问题已经有最佳答案,请猛点这里访问。
自从我开始使用Python的第3版以来,我遇到了很多通过套接字发送字符串的问题。 我知道要在套接字中发送字符串,必须在字符串之前放置
我需要将键盘写入的消息发送到套接字:
1 2 3 4 5 6 7 | import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(("localhost",7500)) msg = input() client.send(msg) |
但是,当我尝试它时,我收到以下错误:
1 | TypeError: a bytes-like object is required, not 'str' |
有人能告诉我如何将
您需要
1 | msg = input().encode() |
您不需要在Python 2中执行此操作的原因是因为unicode字符串是他们自己的类型,但是在Python 3中,默认情况下所有字符串现在都是unicode。
为此,您可以使用
1 2 3 4 5 | import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(("localhost",7500)) msg = input() client.send(msg.encode()) |
它返回编码为bytes对象的字符串。 见str.encode