Skip to content

Instantly share code, notes, and snippets.

@vikjam
Created February 18, 2021 04:34
Show Gist options
  • Save vikjam/755930297430091d8d8df70ac89ea9e2 to your computer and use it in GitHub Desktop.
Save vikjam/755930297430091d8d8df70ac89ea9e2 to your computer and use it in GitHub Desktop.
Suppress output from function
# Via Stack Overflow
# https://stackoverflow.com/questions/11130156/suppress-stdout-stderr-print-from-python-functions
from contextlib import contextmanager,redirect_stderr,redirect_stdout
from os import devnull
@contextmanager
def suppress_stdout_stderr():
"""A context manager that redirects stdout and stderr to devnull"""
with open(devnull, 'w') as fnull:
with redirect_stderr(fnull) as err, redirect_stdout(fnull) as out:
yield (err, out)
# Example usage
import sys
def rogue_function():
print('spam to stdout')
print('important warning', file=sys.stderr)
1 + 'a'
return 42
with suppress_stdout_stderr():
rogue_function()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment