Sunday, February 13, 2011

Python file interface for strings

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?

  • Yes, there is StringIO:

    import StringIO
    import sys
    
    
    sys.stdout = StringIO.StringIO()
    print "foo", "bar", "baz"
    s = sys.stdout.getvalue()
    
    CAdaker : That's it. Thanks.
  • For better performance, note that you can also use cStringIO. But also note that this isn't very portable to python 3.

0 comments:

Post a Comment