2008-09-26 3 views

ответ

81

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

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

Я использую cStringIO (который быстрее), но учтите, что это не accept Unicode strings that cannot be encoded as plain ASCII strings. (Вы можете переключиться на StringIO, изменив «cStringIO» на «из StringIO».)

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

f = io.StringIO('foo') 
+1

Теперь есть причина использовать cStringIO: cStringIO не поддерживает строки unicode. – 2008-09-26 21:38:43

+3

Я думаю, что лучшей идеей является «import cStringIO как StringIO». Таким образом, если вам нужно перейти на чистую реализацию python по какой-либо причине, вам нужно только изменить одну строку. – 2008-09-28 21:55:48

+0

Это тоже работает для Python2.7: `io.StringIO (u'foo ')` Я бы использовал это – guettli 2018-02-27 15:01:26

22

В Python 3.0:

import io 

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

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

1

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

io.StringIO(u'foo') 
Смежные вопросы