¿Cómo inicializo ('declaro') una bytes
variable vacía en Python 3?
Estoy tratando de recibir fragmentos de bytes y luego cambiar eso a una cadena utf-8. Sin embargo, no estoy seguro de cómo inicializar la variable inicial que contendrá toda la serie de bytes. msg
Esta variable se llama No puedo inicializarlo como None
, porque no puedes agregar un bytes
y un
NoneType
. No puedo inicializarlo como una cadena Unicode, porque entonces intentaré agregarlo bytes
a una cadena. Además, a medida que el programa receptor evoluciona, podría meterme en un lío con series de bytes que contienen solo partes de caracteres. No puedo prescindir de una msg
inicialización, porque entonces msg
sería referenciado antes de la asignación. El siguiente es el código en cuestión.
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))
Solución del problema
Simplemente use una cadena de bytes vacía, b''
.
Sin embargo, concatenar a una cadena repetidamente implica copiar la cadena muchas veces. A bytearray
, que es mutable, probablemente será más rápido:
msg = bytearray() # New empty byte array
# Append data to the array
msg.extend(b"blah")
msg.extend(b"foo")
Para decodificar la matriz de bytes en una cadena, use msg.decode(encoding='utf-8')
.
No hay comentarios.:
Publicar un comentario