Arreglar el error Bytes-Like Object Is Required Not STR en Python
Este tutorial discutirá el error a bytes-like object is required, not 'str'
en Python, y las formas de solucionarlo. Este TypeError
se muestra cuando se realiza una operación no válida en el tipo de datos incorrecto.
Discutiremos los objetos de cadena y bytes en Python. Las cadenas son una colección de caracteres, mientras que las segundas son una secuencia de bytes, también llamados objetos Unicode
. En Python3, todas las cadenas son objetos Unicode
por defecto. En Python 2, podemos convertir cadenas a Unicode
y viceversa utilizando las funciones encode
y decode
.
Obtenemos este error cuando trabajamos con un objeto de bytes pero lo tratamos como una cadena. Es común debido al cambio de estos objetos en Python 2 y Python 3. Recibimos este error mientras trabajamos con un archivo binario y lo tratamos como una cadena.
Por ejemplo:
with open("myfile.txt", "rb") as f:
a = f.read()
print(type(a))
a.split(";")
Producción :
TypeError: a bytes-like object is required, not 'str'
En el ejemplo anterior, leemos un archivo en modo rb
. Este modo significa leer un archivo binario. El contenido de esto son bytes y se almacenan en la variable a
, y mostramos el tipo.
Cuando aplicamos la función split()
a esta variable, obtenemos el error se requiere un objeto similar a bytes, no 'str'
. Es porque la función split()
funciona con objetos de cadena.
Para evitar este error, tenga cuidado con el tipo de lectura de datos y sus operaciones. También podemos corregir este error convirtiendo el objeto similar a bytes en una cadena usando la función str()
.
Por ejemplo:
with open("myfile.txt", "rb") as f:
a = str(f.read())
print(type(a))
s = a.split(";")
Producción :
<class 'str'>
El str()
convierte el objeto en una cadena para usar la función split()
.
Este error también es frecuente cuando se trabaja con sockets y se envían o reciben datos. Podemos usar el carácter b
antes de una cadena para enviar bytes o la función encode()
con el parámetro utf-8
.
Por ejemplo:
data = b"result"
s.sendall(data)
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInArtículo relacionado - Python String
- Eliminar comas de cadena en Python
- Cómo comprobar si una cadena está vacía de forma ptónica
- Convertir una cadena en nombre de variable en Python
- Cómo eliminar los espacios en blanco de una cadena en Python
- Cómo extraer números de una cadena en Python
- Cómo convertir una cadena a datetime en Python
Artículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python