On Wed, 17 Oct 2007 07:57:04 -0700, 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 it is your program, then just change your program to not print to the screen! Instead of writing a function like this: def parrot(): # This is bad practice! do_lots_of_calculations() print "This is a parrot" write it like this: def parrot(): # This is good practice do_lots_of_calculations() return "This is a parrot" What's the difference? In the first version, the function parrot() decides that its result is always printed. In the second version, YOU decide: result = parrot() # now pass the result to something else do_more_calculations(result) # or print it print result Otherwise, you can do something like this: import cStringIO import sys capture_output = cStringIO.StringIO() sys.stdout = capture_output # call the function that always prints parrot() # now restore stdout sys.stdout = sys.__stdout__ but that's a little risky, and I recommend against it unless you have no other choice. -- Steven -- http://mail.python.org/mailman/listinfo/python-list