如何创建具有字符串内容的类似文件的对象(与 File 相同的 Duck 类型) ?
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模块。
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')))