Gagal untuk mendapatkan data menggunakan read() dari StringIO di python

Menggunakan Python2.7 versi. Di bawah ini adalah contoh kode.

import StringIO
import sys

buff = StringIO.StringIO()
buff.write("hello")
print buff.read()

dalam program di atas, baca() mengembalikan apa-apa padaku di mana sebagai getvalue() mengembalikan saya "hello". Siapapun dapat membantu saya dalam memperbaiki masalah ini? Saya perlu membaca() karena saya berikut kode melibatkan membaca "n" byte.

Mengomentari pertanyaan (3)

Anda perlu untuk me-reset buffer posisi awal. Anda dapat melakukan ini dengan melakukan buff.mencari(0).

Setiap kali anda membaca atau menulis ke buffer, posisi lebih maju dengan satu. Katakanlah anda mulai dengan sebuah buffer kosong.

Buffer nilai ",", buffer pos adalah 0. Anda melakukan buff.write("hello"). Jelas buffer nilai sekarang hello. Buffer posisi, namun, sekarang 5. Ketika anda menelepon read(), tidak ada masa lalu posisi 5 untuk baca! Sehingga ia mengembalikan string kosong.

Komentar (0)
In [38]: out_2 = StringIO.StringIO('not use write') # be initialized to an existing string by passing the string to the constructor

In [39]: out_2.getvalue()
Out[39]: 'not use write'

In [40]: out_2.read()
Out[40]: 'not use write'

atau

In [5]: out = StringIO.StringIO()

In [6]: out.write('use write')

In [8]: out.seek(0)

In [9]: out.read()
Out[9]: 'use write'
Komentar (1)