I don't think anyone's mentioned the python logging package, which is good for general purpose logging. However, since you want to do this without changing all your print statements:
In Python 2.x, you can probably reassign sys.stdout. As long as you aren't outputting anything else to stdout, this should probably work (lightly tested): --------------------------------------- import sys class DummyStdout(object): def write(self, text): pass print "sys.stdout is not redirected" sys.stdout = DummyStdout() print "This should not appear" print "Nor should this" # Restore the original stdout again sys.stdout = sys.__stdout__ print "This should appear again now" ---------------------------------------- Instead of the DummyStdout class, you could also try: sys.stdout = open('NUL', 'w') I believe NUL is the Windows equivalent of /dev/null, but I'm not an expert. In Python 3.0, 'print' is a normal function instead of a keyword, so I assume you can replace it like this (untested): ---------------------------------------- import __builtin__ def my_print(*args, **kwargs): pass __builtin__.print = my_print ---------------------------------------- Hope that helps, Simon > -----Original Message----- > From: python-win32-bounces+simon.king=motorola....@python.org > [mailto:python-win32-bounces+simon.king=motorola....@python.or > g] On Behalf Of Nalli Dinesh > Sent: 08 January 2009 18:13 > To: Vernon Cole; jim.vick...@noaa.gov > Cc: python-win32@python.org > Subject: Re: [python-win32] python print statements > > Thanks Vernon, Jim, Micheal. > > I kind of knew the different ways of modelling any python > application as you guys have described in your email. I > appreciate your inputs though. But I am looking for a > different solution. > > Here is what I am looking at - > > I do not want to remodel my application at this stage. I have > print statements all over the place. I looking at a solution > where, without touching the print statements at all, I want > to tell the python interpreter to not execute print > statements inside my application, when the application is > running. Like, is there a way to tell the Python interpreter > do not bother to execute print lines in my application. Or is > there a way to just define a python builtin variable which > dictates executing print statements or not. > > Hope I am able to describe clearly what solution I am looking for. > > To my understanding, I do not think any language supports > stuff like this. If I am right about it, then we all know to > what level of growth all the s/w languages must grow too!!!! > > > On Thu, Jan 8, 2009 at 8:02 AM, Vernon Cole > <vernondc...@gmail.com> wrote: > > > How about -- > if debug: print x > or, in a more complex setting, have a "verbose" > attribute in each module and -- > if self.verbose > 2: print x # so you can have > levels of debug printouts > ?? > -- > Vernon Cole > > > On Wed, Jan 7, 2009 at 11:30 PM, Michel Claveau > <m...@mclaveau.com> wrote: > > Hi! > > > > 1) Define your print function. Example: > > def mprint(*par): > > for i in par: > > print i, > > print > > > > 2) in your code, replace all 'print' by 'mprint' > > > > 3) when you want cancel the print, modify only the > mprint function. > > > > @-salutations > > -- > > Michel Claveau > > _______________________________________________ > > python-win32 mailing list > > python-win32@python.org > > http://mail.python.org/mailman/listinfo/python-win32 > > > _______________________________________________ > python-win32 mailing list > python-win32@python.org > http://mail.python.org/mailman/listinfo/python-win32 > > > > _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32