Python 3 как "объявить" пустую переменную " bytes
как мне "объявить" пустой bytes
переменная в Python 3?
Я пытаюсь получить куски байтов, а затем изменить это на строку utf-8.
Однако я не уверен, как объявить начальную переменную, которая будет содержать всю серию байтов. Эта переменная называется msg
. Я не могу объявить это как None
, потому что вы не можете добавить bytes
и NoneType
. Я не могу объявить его как строку unicode, потому что тогда я попытаюсь добавить bytes
в строку. Также, как приемная программа развивается, это может привести меня к беспорядку с серией байтов, которые содержат только части символов. Я не могу обойтись без msg
декларации, потому что тогда msg
будет ссылаться перед назначением.
Следующий код в вопрос
def handleClient(conn, addr):
print('Connection from:', addr)
msg = ?
while 1:
chunk = conn.recv(1024)
if not chunk:
break
msg = msg + chunk
msg = str(msg, 'UTF-8')
conn.close()
print('Received:', unpack(msg))
3 ответов
просто используйте пустую строку байт, b''
.
однако объединение со строкой многократно включает копирование строки много раз. А bytearray
, который является изменяемым, скорее всего, будет быстрее:
msg = bytearray() # New empty byte array
# Append data to the array
msg.extend(b"blah")
msg.extend(b"foo")
чтобы декодировать массив байтов в строку, используйте msg.decode(encoding='utf-8')
.
использовать msg = bytes('', encoding = 'your encoding here')
.
Encase вы хотите пойти с кодировкой по умолчанию, просто используйте msg = b''
, но это фигня весь буфер, если его не в той же кодировке
согласно документации:
Blockquote разъем.recv (bufsize [, флаги]) Получение данных из сокета. Возвращаемое значение строка представление полученных данных. Цитата Итак, я думаю, что msg= "" должен работать просто отлично:
>>> msg = ""
>>> msg
''
>>> len(msg)
0
>>>