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()
  • 相关阅读:
    ES6 对Math对象的扩展
    ES6 对Number的扩展
    monolog 应该是世界上最好的日志插件了
    ES6 解构赋值的常见用途,很强大
    ES6 对象的解构赋值
    ES6 数组的解构赋值
    ES6 const
    laravel相关插件
    c++ 库 boost安装
    Eclipse ftp插件
  • 原文地址:https://www.cnblogs.com/linyihai/p/7071484.html
Copyright © 2011-2022 走看看