如何获取StringIO对象中的字节?
StringIO
对象实现了文件API,因此您可以像处理file
对象一样获取其大小:将游标移到末尾并查看偏移量。
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)
正如 Kimvais 提到的那样,您还可以使用 len
,但请注意,这仅适用于 StringIO 对象。总的来说,首先使用这些对象的一个主要原因是将它们与期望文件类似对象的代码一起使用。当您处理通用的类似文件的对象时,通常希望执行上述操作以获取其长度,因为这适用于 任何 类似文件的对象。
通过检查len属性,使用getvalue()方法
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'
tell()
,但你的方法显然更正确。 - OmnifariouscStringIO
而不是StringIO
,但我不知道为什么它没有与StringIO
相匹配的len
属性。我猜测len
属性实际上是未记录的,这也有点奇怪。 - Glenn Maynardlen
函数在 Python3 中已经被移除,因此您不能在 Python3 中使用您的解决方案。 - sheziStringIO.write()
会返回写入的字符数量,因此您只需跟踪这些数量而无需检查长度。 - Kimvaislen(s.getvalue())
pos = s.tell()
和s.seek(pos)
的结果。 - ThorSummoner