如何用 Python 在文件中包装字符串?

如何创建具有字符串内容的类似文件的对象(与 File 相同的 Duck 类型) ?

70468 次浏览

For Python 2.x, use the StringIO module. For example:

>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'

我使用 cStringIO (速度更快) ,但注意它不使用 接受不能编码为普通 ASCII 字符串的 Unicode 字符串。(您可以通过将“ from cStringIO”更改为“ from StringIO”来切换到 StringIO。)

对于 Python 3.x,使用 io模块。

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())

The output is:

'abcdefgh'

这适用于 Python 2.7和 Python 3.x:

io.StringIO(u'foo')

如果希望类似文件的对象包含字节,则应首先将字符串编码为字节,然后可以使用 字节输入对象。在 Python 3中:

from io import BytesIO


string_repr_of_file = 'header\n byline\n body\n body\n end'
function_that_expects_bytes(BytesIO(bytes(string_repr_of_file,encoding='utf-8')))