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 verificar si una cadena está vacía de una manera pythonista
- 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
