Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: deletedprofile en Julio 29, 2018, 09:06:22 PM

Título: Alguien que me ayude con este problema (Python 3.x)
Publicado por: deletedprofile en Julio 29, 2018, 09:06:22 PM
Buenas, escribo este tema para ver si alguien de ustedes me ayudan con este problema que estoy teniendo.
Se trata de que obtengo este error: TypeError: a bytes-like object is required, not 'str'
Pues el error se explica por si solo, pero no le hallo solución.
Aca está mi código:
Código (python) [Seleccionar]
import sys

def beep():

if sys.platform == 'linux':

audio = open('/dev/audio', 'wb')

count=0

while count <250:

beep = chr(63) + chr(63) + chr(63) + chr(63)

audio.write(beep)

beep = chr(0) + chr(0) + chr(0) + chr(0)
audio.write(beep)
count=count + 1
audio.close()

beep()

Por cierto, me doy cuenta que parezco noob comparado con los ingeniosos script que hay aca xD
Título: Re:Alguien que me ayude con este problema (Python 3.x)
Publicado por: tr0n en Julio 29, 2018, 11:38:20 PM
Parece que es la forma en que se procesa el archivo.
Esta respuesta de stack overflow hizo que compilara el script https://stackoverflow.com/questions/33054527/python-3-5-typeerror-a-bytes-like-object-is-required-not-str-when-writing-t (https://stackoverflow.com/questions/33054527/python-3-5-typeerror-a-bytes-like-object-is-required-not-str-when-writing-t). Cambia el open('/dev/audio', 'wb') por open('/dev/audio', 'w')

Espero te sirva.
Título: Re:Alguien que me ayude con este problema (Python 3.x)
Publicado por: Once en Julio 30, 2018, 01:25:25 AM
El mismo error te lo está diciendo, debes escribir en el archivo los datos en formato bytes y no en formato str, puedes hacer la conversión usando el método encode de la clase str: str.encode() (https://docs.python.org/3/library/stdtypes.html#str.encode), simplemente cuando vas a escribir en el archivo, hazlo así:

Código (python) [Seleccionar]
audio.write(str.encode(beep))

Y por favor, ten cuidado con los niveles de identación, auqnue python es muy permisivo con eso, lo ideal es trabajar a cuatro espacios, así todos pueder leer, modificar y corregir tus códigos mucho más fácil.

Saludos!