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
>>>