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.

¿Fue útil?

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
scroll top