Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
iperov
GitHub Repository: iperov/deepfacelab
Path: blob/master/core/stdex.py
628 views
1
import os
2
import sys
3
4
class suppress_stdout_stderr(object):
5
def __enter__(self):
6
self.outnull_file = open(os.devnull, 'w')
7
self.errnull_file = open(os.devnull, 'w')
8
9
self.old_stdout_fileno_undup = sys.stdout.fileno()
10
self.old_stderr_fileno_undup = sys.stderr.fileno()
11
12
self.old_stdout_fileno = os.dup ( sys.stdout.fileno() )
13
self.old_stderr_fileno = os.dup ( sys.stderr.fileno() )
14
15
self.old_stdout = sys.stdout
16
self.old_stderr = sys.stderr
17
18
os.dup2 ( self.outnull_file.fileno(), self.old_stdout_fileno_undup )
19
os.dup2 ( self.errnull_file.fileno(), self.old_stderr_fileno_undup )
20
21
sys.stdout = self.outnull_file
22
sys.stderr = self.errnull_file
23
return self
24
25
def __exit__(self, *_):
26
sys.stdout = self.old_stdout
27
sys.stderr = self.old_stderr
28
29
os.dup2 ( self.old_stdout_fileno, self.old_stdout_fileno_undup )
30
os.dup2 ( self.old_stderr_fileno, self.old_stderr_fileno_undup )
31
32
os.close ( self.old_stdout_fileno )
33
os.close ( self.old_stderr_fileno )
34
35
self.outnull_file.close()
36
self.errnull_file.close()
37
38