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


Answers:


121

对于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')

1
现在有一个使用cStringIO的理由:cStringIO不支持unicode字符串。
Armin Ronacher

6
我认为一个更好的主意是“将cStringIO导入为StringIO”。这样,如果你需要切换到以任何理由纯Python实现,您只需要更改一行..
约翰·福希

这也适用于Python2.7:io.StringIO(u'foo')我会用它
-guettli

29

在Python 3.0中:

import io

with io.StringIO() as f:
    f.write('abcdef')
    print('gh', file=f)
    f.seek(0)
    print(f.read())

1
@ABB接受的答案已经显示了这种用法。我的回答是补充性的:它演示- with语句以及写,打印,查找,读取方法。
jfs


5

如果类文件对象应包含字节,则应首先将字符串编码为字节,然后可以使用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')))

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.