Este blog ya no está activo, sigue informándote aquí:

miércoles, 13 de septiembre de 2017

Tonto.- Un fallo mas a mi lista.

Tonto es el asistente virtual, ya sabeis uno de esos mayordomos virtuales que se han hecho tan famosos después de la película de Iron Man y que cree una semana santa cuando quise aprender Python. 


La verdad es que el proyecto tiene mucha aceptación entre la comunidad de Youtube que aporta todas las ideas, hasta cree el foro pero parece que esto no cuaja tanto. (si, el que habla en el vídeo soy yo.)


Recuerdo a todos los interesando que en este blog prometí una nueva versión para finales de este mes y revisando el código me he dado cuenta de un error que cometí [al traspasar el código] a la versión 3.X

Este error proviene de que el Lexical analysis, un parser que usa Python 3.X para leer (Si no es así corregidme), tiene diferencias secuencias de "escape" como así lo llama como así lo llama en la [documentación] oficial.

Un ejemplo de las secuencia de escape mas conocidos seria el \n que nos da la oportunidad de que Python entienda que queremos un salto de linea. Pues en Python 3.X existe \U con lo que python genera un valor Unicode de 8 caracteres.

En tonto las llamadas a comandos del sistemas son muy frecuentes gracias a os.system y si queremos abrir una carpeta en un sistema Windows lo mas seguro es que lo hagamos de la siguiente manera:
  • '"start C:\Users\Eric\... "'
Aquí está el problema al incluir \U en la ruta Python lo detecta como una secuencia de escape y da un error ya que intenta generar un valor Unicode de 8 caracteres para la letra "s" y esta claro que no puede.

Para solucionar este error tenemos que hacerle entender al parser de Python que todo es un único String por lo que, no nos queda otro remedie que porner el prefijo r delante de nuestro String para convertirlo en un raw string de la siguiente manera:
  • r'"start C:\Users\Eric\... "'
Y puede que todo esto es para decir que he agregado un r a los string que lo necesitaban para que tonto funcionaria. Pero el porque es lo importante y es la diferencia entre que tonto funcione y no.

No obstante ya he editado el script de Tonto 3.X en el repositorio de GitHub para que no haya ningún problema:
 Muchas gracias,
Un saludo. 

No hay comentarios:

Publicar un comentario