Вопрос

Как мне создать файлоподобный объект (того же типа, что и File) с содержимым строки?

Это было полезно?

Решение

Для Python 2.x используйте СтрингИО модуль.Например:

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

Я использую cStringIO (что быстрее), но обратите внимание, что это не принимайте строки в Юникоде, которые не могут быть закодированы как простые строки ASCII.(Вы можете переключиться на StringIO, изменив "from cStringIO" на "from StringIO".)

Для Python 3.x используйте io модуль.

f = io.StringIO('foo')

Другие советы

В Python 3.0:

import io

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

Два хороших ответа.Я бы добавил небольшую хитрость — если вам нужен реальный файловый объект (некоторые методы ожидают его, а не просто интерфейс), вот способ создать адаптер:

Это работает для Python2.7 и Python3.x:

io.StringIO(u'foo')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top