Дополнительно
Не удается получить данные при использовании функции read() из StringIO в python
Использую версию Python2.7. Ниже приведен мой пример кода.
import StringIO
import sys
buff = StringIO.StringIO()
buff.write("hello")
print buff.read()
В приведенной выше программе read() возвращает мне ничего, в то время как getvalue() возвращает мне "hello". Может ли кто-нибудь помочь мне решить эту проблему? Мне нужен read(), потому что мой следующий код включает чтение "n" байт.
64
2
Вам необходимо сбросить позицию буфера в начало. Это можно сделать, выполнив команду
buff.seek(0)
.Каждый раз, когда вы читаете или записываете в буфер, позиция сдвигается на единицу. Допустим, вы начинаете с пустого буфера.
Значение буфера -
"""
, позиция буфера -0
. Вы делаетеbuff.write("hello")
. Очевидно, что значение буфера теперь равноhello
. Однако позиция буфера теперь равна5
. Когда вы вызываетеread()
, после позиции 5 читать нечего! Поэтому возвращается пустая строка.или