Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] TypeError: argument should be integer or bytes-like object, not 'str'

Estas en el tema de TypeError: argument should be integer or bytes-like object, not 'str' en el foro de Python en Foros del Web. hola. tengo un código que funciona en python2 , pero al pasarlo a python3 falla. PARTE DONDE MARCA EL ERROR: if str.find('GGA') > 0: msg ...
  #1 (permalink)  
Antiguo 11/07/2020, 13:18
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.914
Antigüedad: 17 años, 7 meses
Puntos: 2
TypeError: argument should be integer or bytes-like object, not 'str'

hola.

tengo un código que funciona en python2 , pero al pasarlo a python3 falla.

PARTE DONDE MARCA EL ERROR:
if str.find('GGA') > 0:
msg = pynmea2.parse(str)


ERROR:
if str.find('GGA') > 0:
TypeError: argument should be integer or bytes-like object, not 'str'



El código lee via serial datos de un GPS.


serialPort = serial.Serial(port, baudrate = 9600, timeout = 0.5)
str1 = serialPort.readline()



Espero que alguien me pueda orientar.
saludos.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"

Última edición por mveraa; 11/07/2020 a las 13:32
  #2 (permalink)  
Antiguo 15/07/2020, 16:51
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.914
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: TypeError: argument should be integer or bytes-like object, not 'str'

fui probando punto a punto en mi raspeberry pi.

python3

>>import serial
>>gps = serial.Serial("/dev/ttyUSB0", baudrate = 9600)
>>line = str(gps.readline()).encode()
>>print(line)

CODIGO QUE DEVUELVE EL GPS:
b"b'$GPGGA,222930.000,3327.2039,S,07033.7719,W,1,9 ,0.84,626.5,M,29.3,M,,*53\\r\\

>>line.split(",")

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'


Lo que menos entiendo es que en print(line) imprimio lo que envio el gps en cadena.
no entiendo porque se niega a separarlo al hacer line.split(",")

saludos.
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #3 (permalink)  
Antiguo 15/07/2020, 17:10
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.914
Antigüedad: 17 años, 7 meses
Puntos: 2
Respuesta: TypeError: argument should be integer or bytes-like object, not 'str'

ya lo solucione solo se cambia la linea asi:

line=str((gps.readline()), encoding = 'utf-8')
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"



La zona horaria es GMT -6. Ahora son las 18:26.