In article <[EMAIL PROTECTED]>, Mark McEahern <[EMAIL PROTECTED]> wrote:
> Ron Garret wrote: > > > But this topic does bring up a legitimate question: I have a bunch of > > code that generates HTML using PRINT statements. I need to convert > > all this code to return strings rather than actually printing them (so > > I can use the results to populate templates). In Lisp I could do this: > > > > (with-output-to-string (s) > > (let ( (*standard-output* s) ) > > (call-html-generating-code) > > s)) > > > > Is there an equivalent Python trick to capture a function call's > > output as a string? > > > > > Just to make sure I understand, I'm going to restate your question: > > Is there a way to capture stdout? > > The answer: Sure, replace it with something file-like: > > >>> import sys, StringIO > >>> default = sys.stdout > >>> writer = StringIO.StringIO() > >>> sys.stdout = writer > >>> print 'Whatever' > >>> sys.stdout = default > >>> print writer.getvalue() > Whatever > > >>> > > // m That's exactly what I was looking for. Thanks! rg -- http://mail.python.org/mailman/listinfo/python-list