cStringIO 實現指定大小的字符串緩存
阿新 • • 發佈:2017-06-23
繼承 大小 pan get readline 裁剪 實現 mst ffd
StringIO經常被用來作為字符串的緩存,以下實現無論寫入多少字符串,總能返回一個指定大小的緩存
from cStringIO import StringIO class CustomStringIO(): def __init__(self, max_buffer = 4096): self.max_buffer = max_buffer #用來設置stringIO最大存儲字節數 self.buffer = StringIO() #cStringIO.StringIO 不能用於繼承,一旦賦值初始化了,就不能改變,但其效率比StringIO.StringIO高,cStringIO沒有len和pos屬性。(還有,cStringIO不支持Unicode編碼) def truncate_to_maxsize(self): ‘‘‘自定義裁剪函數,當StringIO存儲字節數超過定義的最大字節數時,裁剪最後寫入的最大長度 self.buffer.seek(-self.max_buffer, 2) _last = self.buffer.readlines() self.buffer.truncate(0) self.buffer.writelines(_last) def write(self,string): self.buffer.write(string) self.truncate_to_maxsize() def getvalue(self): return self.buffer.getvalue() if __name__ == ‘__main__‘: mystringio=CustomStringIO(10) mystringio.write(‘lyhlyh‘) mystringio.write(‘ldfdffdfdsfdsfsdfs‘) mystringio.write(‘fdfdfdfdf‘) print mystringio.getvalue()
cStringIO 實現指定大小的字符串緩存