zoukankan      html  css  js  c++  java
  • cStringIO 实现指定大小的字符串缓存

    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()
  • 相关阅读:
    最小的K个数
    数组中出现次数超过一半的数字
    符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    String,StringBuilder,StringBuffer
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    Java单例模式
    222. Count Complete Tree Nodes
  • 原文地址:https://www.cnblogs.com/linyihai/p/7071484.html
Copyright © 2011-2022 走看看