4

Is there a Python class that wraps the file interface (read, write etc.) around a string? I mean something like the stringstream classes in C++.

I was thinking of using it to redirect the output of print into a string, like this

sys.stdout = string_wrapper()
print "foo", "bar", "baz"
s = sys.stdout.to_string() #now s == "foo bar baz"

EDIT: This is a duplicate of How do I wrap a string in a file in Python?

Community
  • 1
  • 1
CAdaker
  • 13,599
  • 3
  • 29
  • 30

2 Answers2

12

Yes, there is StringIO:

import StringIO
import sys


sys.stdout = StringIO.StringIO()
print "foo", "bar", "baz"
s = sys.stdout.getvalue()
Peter Hoffmann
  • 52,690
  • 14
  • 73
  • 58
2

For better performance, note that you can also use cStringIO. But also note that this isn't very portable to python 3.

Jason Baker
  • 182,027
  • 130
  • 359
  • 509