Globally override built-in print function?
Dave W.
evadeflow at gmail.com
Thu Apr 15 22:17:51 EDT 2010
> > I naively thought I could capture output from exec()'ed print
> > invocations by (somehow) overriding 'print' globally. But this
> > seems not to be possible. <snip>
>
> old_print = __builtins__.print
> __builtins__.print = printhook
> yield
> __builtins__.print = old_print
I'm pretty sure this is semantically equivalent to my original code,
but I gave it a try anyway. FWIW, it doesn't work, either. :-}
> But you really should replace sys.stdout and sys.stderr instead.
I'm starting to believe it, but... I thought that one of the
benefits of making print a function was that it *could* be globally
replaced. So far I've had no luck injecting a custom print
replacement into other modules. Is this really not possible?
More information about the Python-list
mailing list