b Строка с несколькими входами (TypeError:% b требует байтовоподобный объект или объект, который реализует __bytes__, а не 'str') - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь закодировать строку с несколькими входами, но эта строка должна быть преобразована в байты, потому что я делаю программу, которая подключается к серверу (используя сокеты), который использует протокол, который должен получать сообщения в байтах. Я делаю следующий код:

print("Please introduce your username: ")
username = input()
print("Please introduce your password: ")
password = input()
client_socket.send(b"AUTH:%s:%s\n"%(username, password)) 

Это дает мне следующую ошибку:

%b requires a bytes-like object, or an object that implements ____bytes____, not 'str'

Сервер должен получить следующее сообщение:

AUTH:username:password

ссоответствующее имя пользователя и пароль для входа в систему.

Есть ли у вас какие-либо идеи о том, как заставить это работать?

1 Ответ

4 голосов
/ 04 октября 2019

Использование:

username = input()
password = input()
data = "AUTH:{}:{}\n".format(username, password)
client_socket.send(data.encode())

Объяснение:

  1. Получить необходимые данные
  2. Использовать строку форматирование для построения строки, которую выrequire *
  3. Используйте метод строк build-int encode для получения объекта байта.
  4. Прибыль!

* Вы также можете использовать f-строку Python или форматирование Python для построения нужной строки.

...