1 """quietconsole - A module to keep console I/O quiet but dump it when needed"""
6 def __init__(self
, stdouterr
):
7 self
.keep_stdin
= sys
.stdin
9 self
.keep_stdouterr
= stdouterr
12 self
.keep_stdin
= self
.keep_stdouterr
= None
15 """Return to old state, with true stdio"""
16 if self
.keep_stdin
== None:
18 sys
.stdin
= self
.keep_stdin
19 self
.keep_stdin
= None
20 self
.keep_stdouterr
._revert
(1)
21 self
.keep_stdouterr
= None
23 def read(self
, *args
):
25 return apply(sys
.stdin
.read
, args
)
27 def readlines(self
, *args
):
29 return apply(sys
.stdin
.readlines
, args
)
31 def readline(self
, *args
):
33 return apply(sys
.stdin
.readline
, args
)
39 class _PseudoStdouterr
:
41 self
.keep_stdout
= sys
.stdout
42 self
.keep_stderr
= sys
.stderr
43 sys
.stdout
= sys
.stderr
= self
47 self
.keep_stdout
= self
.keep_stderr
= None
49 def _revert(self
, dumpdata
=0):
50 if self
.keep_stdout
== None:
52 sys
.stdout
= self
.keep_stdout
53 sys
.stderr
= self
.keep_stderr
54 sys
.keep_stdout
= self
.keep_stderr
= None
55 if dumpdata
and self
.data
:
63 def writelines(self
, arg
):
68 self
.keep_stdout
= self
.keep_stderr
= self
.data
= None
77 # There's no point in re-installing if the console has been active
78 obj
= _PseudoStdouterr()
80 # No need to keep the objects, they're saved in sys.std{in,out,err}
83 if type(sys
.stdin
) == types
.FileType
:
84 return # Not installed
90 print "You will not see this yet"
92 print "You will not see this yet"
94 print "You will not see this yet"
96 print "You will not see this yet"
98 print "You will not see this yet"
100 print "5 seconds have passed, now you may type something"
101 rv
= sys
.stdin
.readline()
102 print "You typed", rv
104 if __name__
== '__main__':