En Mon, 27 Oct 2008 16:03:45 -0200, TP <[EMAIL PROTECTED]> escribió:

Hi everybody,

I try to find a quick way to redirect the standard output of a Python
command (for example: print "message") to a python variable "foobar".
Ok, in this simple example, I could do foobar = "message", but in
fact 'print "message"' could be replaced by any Python function writing on
standard output.
I have googled on this subject.
To redirect to a variable, I could use a temporary file:

import sys
saveout = sys.stdout
fsock = open('out.log', 'w')
sys.stdout = fsock
print 'message'
sys.stdout = saveout
fsock.close()
fsock = open('out.log', 'r')
foobar = fsock.read()
fsock.close()
print "foobar= ", foobar

You are close - but instead of using a real file, look at the StringIO module [1]

import sys
from cStringIO import StringIO

old_stdout = sys.stdout
sys.stdout = stdout = StringIO()
print 'message'
sys.stdout = old_stdout
foobar = stdout.getvalue()
print "foobar= ", foobar

(In case you start playing with this and make a mistake, you can restore the original stdout from sys.__stdout__)

[1] http://docs.python.org/library/stringio.html

--
Gabriel Genellina

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

Reply via email to