Как обернуть строку в файл в Python?


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

4 66

4 ответа:

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

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

Я использую cStringIO (который быстрее), но обратите внимание, что это не принять строки Юникода, которые не могут быть закодированы как простые строки ASCII. (Вы можете переключиться на StringIO, изменив "от cStringIO"на" от 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')