Как обернуть строку в файл в Python? - PullRequest
70 голосов
/ 26 сентября 2008

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

Ответы [ 4 ]

98 голосов
/ 26 сентября 2008

Для Python 2.x используйте модуль StringIO . Например:

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

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

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

f = io.StringIO('foo')
25 голосов
/ 27 сентября 2008

В Python 3.0:

import io

with io.StringIO() as f:
    f.write('abcdef')
    print('gh', file=f)
    f.seek(0)
    print(f.read())
3 голосов
/ 27 сентября 2008

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

2 голосов
/ 27 февраля 2018

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

io.StringIO(u'foo')
...