Как мне создать файловый объект (того же типа утки, что и File) с содержимым строки?
Как мне создать файловый объект (того же типа утки, что и File) с содержимым строки?
Ответы:
Для Python 2.x используйте модуль StringIO . Например:
>>> from cStringIO import StringIO
>>> f = StringIO('foo')
>>> f.read()
'foo'
Я использую cStringIO (который быстрее), но учтите, что он не принимает строки Unicode, которые нельзя закодировать как простые строки ASCII . (Вы можете переключиться на StringIO, изменив «from cStringIO» на «from StringIO».)
Для Python 3.x используйте io
модуль.
f = io.StringIO('foo')
io.StringIO(u'foo')
я бы использовал это
Если ожидается, что ваш файлоподобный объект будет содержать байты, строка должна быть сначала закодирована как байты, а затем вместо этого может использоваться объект 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')))
Два хороших ответа. Я бы добавил небольшую хитрость - если вам нужен реальный файловый объект (некоторые методы ожидают его, а не только интерфейс), вот способ создания адаптера: