What is print? A function?

Steven Bethard steven.bethard at gmail.com
Sun Jan 23 15:46:04 EST 2005


Frans Englich wrote:
> The reason I thinks about this is I need to implement a debug print for my 
> program; very simple, a function/print statement that conditionally prints 
> its message whether a bool is true. Not overly complex.

Sounds like you want to override sys.stdout:

py> class ConditionalWriter(object):
...     def __init__(self, outfile, cond=True):
...         self.outfile = outfile
...         self.cond = cond
...     def write(self, text):
...         if self.cond:
...             self.outfile.write(text)
...
...
py> import sys
py> writer = ConditionalWriter(sys.stdout)
py> sys.stdout = writer
py> print "hi!"
hi!
py> writer.cond = False
py> print "hi!"
py> writer.cond = True
py> print "hi!"
hi!

You probably want to restore sys.stdout when you're done too:

py> sys.stdout = writer.outfile
py> writer.cond = False
py> print "hi!"
hi!

That said, you probably _really_ want the logging module:
     http://docs.python.org/lib/module-logging.html

Steve



More information about the Python-list mailing list