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
