Basierend auf der @ FakeRainBrigand-Lösung schlage ich eine sicherere Lösung vor:
import os, sys
class HiddenPrints:
def __enter__(self):
self._original_stdout = sys.stdout
sys.stdout = open(os.devnull, 'w')
def __exit__(self, exc_type, exc_val, exc_tb):
sys.stdout.close()
sys.stdout = self._original_stdout
Dann können Sie es so verwenden:
with HiddenPrints():
print("This will not be printed")
print("This will be printed as before")
Dies ist viel sicherer, da Sie nicht vergessen können, stdout wieder zu aktivieren, was besonders wichtig ist, wenn Sie Ausnahmen behandeln.
Ohne with
Im folgenden Beispiel werden Druckfunktionen zum Aktivieren / Deaktivieren verwendet, die in der vorherigen Antwort vorgeschlagen wurden.
Stellen Sie sich vor, es gibt einen Code, der eine Ausnahme auslösen kann. Wir mussten finally
Anweisung verwenden, um Drucke auf jeden Fall zu ermöglichen.
try:
disable_prints()
something_throwing()
enable_prints()
except ValueError as err:
handle_error(err)
finally:
enable_prints()
Wenn Sie die finally
Klausel vergessen haben , würde keiner Ihrer print
Anrufe mehr drucken.
Es ist with
sicherer, die Anweisung zu verwenden, die sicherstellt, dass die Ausdrucke wieder aktiviert werden.
Hinweis: Die Verwendung ist nicht sicher sys.stdout = None
, da jemand Methoden wie aufrufen könntesys.stdout.write()