Control de advertencia de Python
Pregunta
Me gustaría que se emitiera algún tipo de advertencia como error, pero solo la primera vez que se produzca. ¿Cómo hacer eso?
Leí http://docs.python.org/library/warnings.html y no sé cómo combinar estos dos tipos de comportamiento.
Solución
Mirando el código de warnings.py, no puede asignar más de una acción de filtro a una advertencia, y no puede (fácilmente) definir sus propias acciones, como 'raise_once'.
Sin embargo, si desea que aparezca una advertencia como excepción, pero solo una vez, eso significa que está detectando la excepción. ¿Por qué no poner una línea en su cláusula de excepción que establece una acción de "ignorar" en esa advertencia en particular?
#!/usr/bin/python
import warnings
warnings.filterwarnings('error','Test')
for i in range(2):
try:
warnings.warn('Test');
except UserWarning, e:
print "Error caught"
warnings.filterwarnings('ignore','Test')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow