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()
  • 相关阅读:
    Atcoder 1975 Iroha and Haiku
    训练指南 string easy
    心态回归
    Mysql问题处理
    Mysql-从库只读设置
    Redis5-集群搭建实验
    安装python3并新建python3的虚拟环境
    docker-部署zabbix4
    pt工具-mysql慢日志分析&优化
    Ansible:playbook-nagios
  • 原文地址:https://www.cnblogs.com/linyihai/p/7071484.html
Copyright © 2011-2022 走看看