889 Stimmen

Wie kann man Python-Warnungen deaktivieren?

Ich arbeite mit Code, der eine Menge (für mich im Moment) nutzloser Warnungen ausgibt, wenn ich die warnings Bibliothek. Beim Lesen (/Scannen) der Dokumentation fand ich nur einen Weg um Warnungen für einzelne Funktionen zu deaktivieren . Aber ich möchte nicht so viel am Code ändern.

Gibt es eine Flagge wie python -no-warning foo.py ?

Was würden Sie empfehlen?

1135voto

Mike Punkte 43431

Sehen Sie sich die Vorübergehende Unterdrückung von Warnungen Abschnitt der Python-Dokumentation:

Wenn Sie Code verwenden, von dem Sie wissen, dass er eine Warnung auslöst, wie z.B. eine veraltete Funktion, aber die Warnung nicht sehen wollen, dann ist es möglich, die Warnung mit der Option catch_warnings Kontext-Manager:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

Ich billige es nicht, aber Sie könnten einfach alle Warnungen unterdrücken damit:

import warnings
warnings.filterwarnings("ignore")

Ex:

>>> import warnings
>>> def f():
...     print('before')
...     warnings.warn('you are warned!')
...     print('after')
...
>>> f()
before
<stdin>:3: UserWarning: you are warned!
after
>>> warnings.filterwarnings("ignore")
>>> f()
before
after

681voto

Pavel Anossov Punkte 60132

Da ist die -W Option .

python -W ignore foo.py

184voto

Holger Bille Punkte 2003

Sie können auch eine Umgebungsvariable definieren (neue Funktion in 2010 - d.h. Python 2.7)

export PYTHONWARNINGS="ignore"

Testen Sie so: Standard

$ export PYTHONWARNINGS="default"
$ python
>>> import warnings
>>> warnings.warn('my warning')
__main__:1: UserWarning: my warning
>>>

Ignorieren Sie Warnungen

$ export PYTHONWARNINGS="ignore"
$ python
>>> import warnings
>>> warnings.warn('my warning')
>>> 

Para Missbilligungswarnungen sehen Sie sich wie-ignoriere-veraltete-warnungen-in-python

Hier kopiert...

Aus der Dokumentation der warnings Modul :

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

Wenn Sie mit Windows arbeiten: Pass -W ignore::DeprecationWarning als Argument für Python. Besser ist es jedoch, das Problem zu lösen, indem man auf int .

(Beachten Sie, dass in Python 3.2, Verwerfungswarnungen standardmäßig ignoriert werden).

Oder:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", category=DeprecationWarning)
    import md5, sha

yourcode()

Jetzt bekommen Sie noch alle anderen DeprecationWarning s, aber nicht die, die durch sie verursacht werden:

import md5, sha

141voto

Abhishek Jain Punkte 2833

Wenn Sie nichts Kompliziertes wollen, dann:

import warnings
warnings.filterwarnings("ignore", category=FutureWarning)

96voto

Chris_Rands Punkte 34669

Dies ist eine alte Frage, aber es gibt einige neuere Leitlinien in PEP 565 dass Sie alle Warnungen ausschalten können, wenn Sie eine Python-Anwendung schreiben, die Sie verwenden sollten:

import sys
import warnings

if not sys.warnoptions:
    warnings.simplefilter("ignore")

Der Grund, warum dies empfohlen wird, ist, dass es alle Warnungen standardmäßig ausschaltet, es aber auch ermöglicht, sie wieder einzuschalten. python -W in der Befehlszeile oder PYTHONWARNINGS .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X