Какой тип объекта client[0]
? Если предположить, что это объект socket
из стандартной библиотеки, то recv()
уже дает вам строку байта. Если вы хотите использовать его как текстовую строку, вы должны использовать .decode()
с любой кодировкой, которую использует тот, кто отправляет вам данные - например,
data = client[0].recv(1).decode('utf-8')
РЕДАКТИРОВАТЬ: в случае, если, согласно вашему комментарию ниже, вы не знаете длину потока заранее, вам нужно продолжать чтение, пока данные не вернутся пустыми. В этом помогает встроенный iter()
:
def read_socket():
return client[0].recv(1)
data = b''.join(iter(read_socket, b''))
Кроме того, если это единственная причина для чтения байта за раз - вы можете и, вероятно, должны использовать больший размер буфера. Если в потоке меньше байтов, чем может вместить буфер, он просто выдаст эти байты.