StringIO經常被用來作為字符串的緩存,應為StringIO有個好處,他的有些接口和文件操作是一致的,也就是說用同樣的代碼,可以同時當成文件操作或者StringIO操作。
一、例子
import StringIO s = StringIO.StringIO() s.write('www.baidu.com\r\n') s.write('news.realsil.com.cn') s.seek(0) print '*' * 20 print s.tell() print s.read() print '*' * 20 print s.tell() print s.read() print '*' * 20 print s.tell() print s.getvalue() print '*' * 20 print s.tell() s.seek(-4,2) print s.read()
運行結果:
********************
0
www.baidu.com
news.realsil.com.cn
********************
34
********************
34
www.baidu.com
news.realsil.com.cn
********************
34
m.cn
二、StringIO類中的方法:
- read
- readline
- readlines
- write
- writeline
- getvalue
- truncate
- tell
- seek
- close
- isatty
- flush
----------------------
s.read([n])
參數n限定讀取長度,int類型;缺省狀態為從當前讀寫位置讀取對象s中存儲的所有數據。讀取結束后,讀寫位置被移動。
----------------------
s.readline([length])
參數length限定讀取的結束位置,int類型,缺省狀態為None:從當前讀寫位置讀取至下一個以“\n”為結束符的當前行。讀寫位置被移動。
----------------------
s.readlines([sizehint])
參數sizehint為int類型,缺省狀態為讀取所有行並作為列表返回,除此之外從當前讀寫位置讀取至下一個以“\n”為結束符的當前行。讀寫位置被移動。
----------------------
s.write(s)
從讀寫位置將參數s寫入給對象s。參數s為str或unicode類型。讀寫位置被移動。
----------------------
s.writelines(list)
從讀寫位置將list寫入給對象s。參數list為一個列表,列表的成員為str或unicode類型。讀寫位置被移動。
----------------------
s.getvalue()
此函數沒有參數,返回對象s中的所有數據。
----------------------
s.truncate([size])
從讀寫位置起切斷數據,參數size限定裁剪長度,缺省值為None。
----------------------
s.tell()
返回當前讀寫位置。
----------------------
s.seek(pos[,mode])
移動當前讀寫位置至pos處,可選參數mode為0時將讀寫位置移動至pos處,為1時將讀寫位置從當前位置起向后移動pos個長度,為2時將讀寫位置置於末尾處再向后移動pos個長度;默認為0。
----------------------
s.close()
釋放緩沖區,執行此函數后,數據將被釋放,也不可再進行操作。
----------------------
s.isatty()
此函數總是返回0。不論StringIO對象是否已被close()。
----------------------
s.flush()
刷新內部緩沖區。
----------------------