How do I create a file-like object (same duck type as File) with the contents of a string?
Daryl Spitzer
For Python 2.x, use the StringIO module. For example:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
I use cStringIO (which is faster), but note that it doesn't accept Unicode strings that cannot be encoded as plain ASCII strings. (You can switch to StringIO by changing "from cStringIO" to "from StringIO".)
For Python 3.x, use the io
module.
f = io.StringIO('foo')
In Python 3.0:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
e-satis
Two good answers. I’d add a little trick — if you need a real file object (some methods expect one, not just an interface), here is a way to create an adapter:
This works for Python2.7 and Python3.x:
io.StringIO(u'foo')
来源:https://stackoverflow.com/questions/141449/how-do-i-wrap-a-string-in-a-file-in-python