|
import os |
|
import sys |
|
|
|
class suppress_stdout_stderr(object): |
|
def __enter__(self): |
|
self.outnull_file = open(os.devnull, 'w') |
|
self.errnull_file = open(os.devnull, 'w') |
|
|
|
self.old_stdout_fileno_undup = sys.stdout.fileno() |
|
self.old_stderr_fileno_undup = sys.stderr.fileno() |
|
|
|
self.old_stdout_fileno = os.dup ( sys.stdout.fileno() ) |
|
self.old_stderr_fileno = os.dup ( sys.stderr.fileno() ) |
|
|
|
self.old_stdout = sys.stdout |
|
self.old_stderr = sys.stderr |
|
|
|
os.dup2 ( self.outnull_file.fileno(), self.old_stdout_fileno_undup ) |
|
os.dup2 ( self.errnull_file.fileno(), self.old_stderr_fileno_undup ) |
|
|
|
sys.stdout = self.outnull_file |
|
sys.stderr = self.errnull_file |
|
return self |
|
|
|
def __exit__(self, *_): |
|
sys.stdout = self.old_stdout |
|
sys.stderr = self.old_stderr |
|
|
|
os.dup2 ( self.old_stdout_fileno, self.old_stdout_fileno_undup ) |
|
os.dup2 ( self.old_stderr_fileno, self.old_stderr_fileno_undup ) |
|
|
|
os.close ( self.old_stdout_fileno ) |
|
os.close ( self.old_stderr_fileno ) |
|
|
|
self.outnull_file.close() |
|
self.errnull_file.close() |
|
|