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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to