Control de Advertencias en python

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
cerenkov
Forista Medio
Forista Medio
Mensajes: 402
Registrado: Jue Jun 17, 2010 5:23 am
Ubicación: Venezuela

Control de Advertencias en python

Mensaje por cerenkov » Sab Jul 14, 2012 5:58 pm

Tengo las siguientes advertencias no fatales en tiempo de ejecución de un script de python (no sé porque razón busca las descripciones en idioma español y no en inglés) y me gustaría eliminarlas.

Código: Seleccionar todo

.
.
.
ADVERTENCIA: Error en las descripciónes, no existe la opción 'y' en
             <operator>.
ADVERTENCIA: Error en las descripciónes, no existe la opción 'o' en
             <operator>.
ADVERTENCIA: Error en las descripciónes, no existe la opción 'no' en
             <operator>.
ADVERTENCIA: El mapa vectorial <lineas_intersec> ya existía y será
             rescrito.
ADVERTENCIA: Error en las descripciónes, no existe la opción 'primero' en
             <cats>.
.
.
.
He probado con varias opciones del módulo warnings con warnings.filterwarnings (y también con warnings.simplefilter("ignore", RuntimeWarning)) pero ninguna funciona. Fuera de ésto, el programa se ejecuta sin problemas y produce el resultado esperado.

Saludos
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Control de Advertencias en python

Mensaje por akodo » Sab Jul 14, 2012 9:09 pm

¿Esos mensajes son logs producidos por tu programa? Es la primera vez que me encuentro con eso.
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
Avatar de Usuario
cerenkov
Forista Medio
Forista Medio
Mensajes: 402
Registrado: Jue Jun 17, 2010 5:23 am
Ubicación: Venezuela

Re: Control de Advertencias en python

Mensaje por cerenkov » Dom Jul 15, 2012 11:24 am

akodo escribió:¿Esos mensajes son logs producidos por tu programa? Es la primera vez que me encuentro con eso.
No. Son mensajes que aparecen por cónsola en tiempo de ejecución. Son "no fatales" y producto de que por alguna razón se va a buscar las descripciones de los comandos v.overlay y v.build.polylines para operator y cats, respectivamente, donde se puede observar a continuación que éstos están asignados con su adecuada sintaxis en inglés (incluso el 'o' y el 'no' no se usan en parte alguna y sin embargo también se ejecuta la advertencia).

Código: Seleccionar todo

.
.
.
grass.run_command("v.overlay",
					ainput="familia_lineas",
					atype="line", 
					binput="cuenca", 
					btype="area", 
					output="lineas_intersec", 
					operator="and", 
					olayer="0,1,0",
					quiet="True",
					overwrite="True")
.
.
.
for i in range(len(mean_x)):
.
.
.
	grass.run_command("v.build.polylines", 
					input="temporal", 
					output=salida, 
					cats="first", 
					quiet="True", 
					overwrite="True")
.
.
.	
La advertencia múltiple para el cats reside en que éste se encuentra en un loop for. El programa se ejecuta hasta el final y no tiene errores lógicos porque finaliza con el resultado esperado. A continuación una imagen de la cónsola de GRASS-QGIS:

Imagen
fpuga
Forista Mayor
Forista Mayor
Mensajes: 798
Registrado: Sab Ago 25, 2007 7:00 am
Ubicación: Galicia - España
Contactar:

Re: Control de Advertencias en python

Mensaje por fpuga » Dom Jul 15, 2012 12:15 pm

Por lo que estoy leyendo aquí, que yo tampoco conocía como funcionaba, para que el filtro de advertencias funcione tienes que pasarle la opción -W al intérprete de python.

Fijate por ejemplo como lo hacenen este ejemplo:

Código: Seleccionar todo

#!/usr/bin/env python -W ignore::RuntimeWarning
Mi blog: [url=http://conocimientoabierto.es]Conocimiento Abierto[/url]
Avatar de Usuario
cerenkov
Forista Medio
Forista Medio
Mensajes: 402
Registrado: Jue Jun 17, 2010 5:23 am
Ubicación: Venezuela

Re: Control de Advertencias en python

Mensaje por cerenkov » Dom Jul 15, 2012 1:58 pm

fpuga escribió:Por lo que estoy leyendo aquí, que yo tampoco conocía como funcionaba, para que el filtro de advertencias funcione tienes que pasarle la opción -W al intérprete de python.

Fijate por ejemplo como lo hacenen este ejemplo:

Código: Seleccionar todo

#!/usr/bin/env python -W ignore::RuntimeWarning

Gracias por la respuesta. Sin embargo, no funciona. He probado otras cosas más (filtro "error" para que se "trabe", filtro "once" para que imprima una vez, otras subclases y la clase base Warning para englobar todas las subclases) y nada: sigue imprimiendo las ADVERTENCIAS. Mi sistema es "insensible" al control de advertencias. Sospecho que si estuviese en inglés haría caso omiso a las mismas porque las descripciones estarían en el idioma correcto.

Lo único que produjo "respuesta" fue el catch.warnings("*") señalando la advertencia una vez impresa (cambio a "True"). Esto señala que debe haber algún procedimiento que en base a este "uno" le impida imprimir la advertencia. Tocará averiguar cual es.
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Control de Advertencias en python

Mensaje por akodo » Mié Jul 18, 2012 9:59 pm

Creo que podrían ser los logs de una de las librerías que estás utilizando. ¿Podrías revisar el código fuente de esas librerías buscando el módulo "logging"?

Otra opción que se me ocurre es que puedan ser "print"s. De ser así, me plantearía cambiar la librería por otra....
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje