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.

È stato utile?

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