У меня есть функция, которая берет строку, отправляет ее через сокет и печатает ее на консоли. Отправка строк этой функции дает некоторые предупреждения, которые при попытке их исправления превращаются в другие предупреждения.Работа со строками кажется более громоздкой, чем должна быть в Python 3.x
Функция:
def log(socket, sock_message):
sock_message = sock_message.encode()
socket.send(sock_message)
print(sock_message.decode())
Я пытаюсь вызвать моя функция так:
log(conn, "BATT " + str(random.randint(1, 100)))
А также, для простоты:
log(conn, "SIG: 100%")
С обоих log
вызовов , Я получаю Type 'str' doesn't have expected attribute 'decode'
. Поэтому вместо этого я видел, что вы можете передать строку как массив байтов с bytes("my string", 'utf-8')
, но затем я получаю предупреждение Type 'str' doesn't have expected attribute 'encode'
.
Я на 100% уверен, что мне просто не хватает ключевого бита информации о том, как передавать строки в python, так что это общепринятый способ выполнить это?
EDIT: Как объяснено ниже, ул не может иметь как decode
и encode
, и я путаю мой IDE, делая как на одной и той же переменной. Я исправил его, сохранив отдельную переменную для версии bytes
, и это устраняет проблему.
def log(sock, msg):
sock_message = msg.encode()
sock.send(sock_message)
print(sock_message.msg())
Благодарим за ясный и краткий ответ. –