Stopping a fucntion from printing its output on screen

MRAB google at mrabarnett.plus.com
Wed Oct 17 21:39:49 CEST 2007


On Oct 17, 4:01 pm, Jeremy Sanders <jeremy
+complangpyt... at jeremysanders.net> wrote:
> sophie_newbie wrote:
> > Hi, in my program i need to call a couple of functions that do some
> > stuff but they always print their output on screen. But I don't want
> > them to print anything on the screen. Is there any way I can disable
> > it from doing this, like redirect the output to somewhere else? But
> > later on in the program i then need to print other stuff so i'd need
> > to re-enable printing too. Any ideas?
>
> If they are python functions, this hack should work...
>
> import sys
>
> class NullWriter(object):
>     def write(self, arg):
>         pass
>
> def testfunc():
>     print "this is a test"
>
> nullwrite = NullWriter()
> oldstdout = sys.stdout
> sys.stdout = nullwrite  # disable output
> testfunc()
> sys.stdout = oldstdout  # enable output
> testfunc()
>
You might want to guarantee that the output is re-enabled even if
testfunc() raises an exception:

    nullwrite = NullWriter()
    oldstdout = sys.stdout
    sys.stdout = nullwrite  # disable output
    try:
        testfunc()
    finally:
        sys.stdout = oldstdout  # enable output




More information about the Python-list mailing list