In Python, how do I check the size of a StringIO object?

Question:

And get the bytes of that StringIO object?

Asked By: TIMEX

||

Answers:

By checking the len attribute and using the getvalue() method

Type "help", "copyright", "credits" or "license" for more information.
>>> import StringIO
>>> s = StringIO.StringIO()
>>> s.write("foobar")
>>> s.len
6
>>> s.write(" and spameggs")
>>> s.len
19
>>> s.getvalue()
'foobar and spameggs'
Answered By: Kimvais

StringIO objects implement the file API, so you can get their size in exactly the same way as you can with a file object: seek to the end and see where it goes.

from StringIO import StringIO
import os
s = StringIO()
s.write("abc")
pos = s.tell()
s.seek(0, os.SEEK_END)
print s.tell()
s.seek(pos)

As Kimvais mentions, you can also use the len, but note that that’s specific to StringIO objects. In general, a major reason to use these objects in the first place is to use them with code that expects a file-like object. When you’re dealing with a generic file-like object, you generally want to do the above to get its length, since that works with any file-like object.

Answered By: Glenn Maynard
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.