Domanda
Vorrei che una sorta di avvertimento venisse generato come errore, ma solo la prima occorrenza. Come farlo?
Ho letto http://docs.python.org/library/warnings.html e non so come combinare questi due tipi di comportamento.
Soluzione
Guardando il codice su warnings.py, non puoi assegnare più di un'azione di filtro a un avviso e non puoi (facilmente) definire le tue azioni, come "raise_once".
Tuttavia, se si desidera generare un avviso come eccezione, ma solo una volta, significa che si sta rilevando l'eccezione. Perché non inserire una riga nella clausola tranne che imposta un'azione "ignora" su quel particolare avviso?
#!/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')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow