2015-02-06 2 views
9

Предположим, у меня есть файл StringIO, похожий на файл, который я только что создал из строки. Я передаю его функции, которая ожидает файлы. Эти функции читают весь файл до конца. Я хочу передать его другой функции, которая ожидает файл-подобный объект. Могу ли я перемотать его так, чтобы его можно было прочитать с самого начала? Если нет, то какие другие подходы я могу предпринять, чтобы выполнить это, что было бы наиболее pythonic?Возможно ли перемотать файл python StringIO в память?

+2

сбрасывает указатель 's.seek (0)' –

+0

Почему вы не просто попробовать и посмотреть? – martineau

ответ

16

, конечно: большинство файлов, как объекты Python, которые, возможно, могут перемотать уже поддерживают seek()

>>> import StringIO 
>>> f = StringIO.StringIO("hello world") 
>>> f.read(6) 
'hello ' 
>>> f.tell() 
6 
>>> f.seek(0) 
>>> f.tell() 
0 
>>> f.read() 
'hello world' 
>>>