如何使用字符串的内容创建类似文件的对象(与 File 相同的鸭子类型)?
Daryl Spitzer
问问题
60741 次
5 回答
138
对于 Python 2.x,请使用StringIO模块。例如:
>>> 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')
于 2008-09-26T19:34:04.977 回答
38
在 Python 3.0 中:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
输出是:
'abcdefgh'
于 2008-09-26T22:00:25.923 回答
9
这适用于 Python2.7 和 Python3.x:
io.StringIO(u'foo')
于 2018-02-27T15:02:22.077 回答
9
如果您的类文件对象预计包含字节,则应首先将字符串编码为字节,然后可以使用BytesIO对象代替。在 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')))
于 2020-02-05T20:01:21.203 回答
2
两个很好的答案。我要添加一个小技巧——如果你需要一个真正的文件对象(有些方法需要一个,而不仅仅是一个接口),这里有一种创建适配器的方法:
于 2008-09-27T12:19:45.217 回答