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 实现指定大小的字符串缓存的更多相关文章

  1. Delphi中建立指定大小字体和读取该字体点阵信息的函数(转)

    源:Delphi中建立指定大小字体和读取该字体点阵信息的函数 Delphi中建立指定大小字体和读取该字体点阵信息的函数 作者:Thermometer Email:  webmaster@daheng- ...

  2. JAVA字符串缓存器全部方法功能及其作用

    不知道干嘛的 serialVersionUID 构造一个没有字符的字符串缓冲区,初始容量为16个字符. StringBuffer() 构造一个没有字符的字符串缓冲区和指定的初始容量. StringBu ...

  3. Java构建指定大小文件

    Java快速创建指定大小的文件,最多的解决办法就是循环向文件里面入固定大小的空字节,但是这种方式构建大文件性能比较低下,因此有这样两种方式可供参考: Java有一个类:FileChannel,查阅AP ...

  4. [JavaScript] 根据指定宽度截取字符串

    /** * 根据指定宽度截取字符串 * @param desc 原始字符串 * @param width 该显示的宽度 * @param fontsize 字体大小 12px * @returns { ...

  5. Android记录20-获取缓存大小和清除缓存功能

    Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存 ...

  6. 随机生成指定长度字符字符串(C语言实现)

    相关函数 srand(), rand()头文件#include<stdlib.h> 定义函数 int rand(void) 函数说明 rand()会返回一随机数值,范围在0至RAND_MA ...

  7. BUGFIX 09 - 记一次Java中String的split正则表达式匹配 - 引发`OutOfMemoryError: Java heap space`的oom异常 排查及解决 -Java根据指定分隔符分割字符串,忽略在引号里面的分隔符

    问题简述 说白了,Java根据指定分隔符分割字符串,忽略在引号(单引号和双引号)里面的分隔符; oom压测的时候,正则匹配"(?=(?:[^\"]*\"[^\" ...

  8. Android之计算缓存大小并且清空缓存

    转载博客:http://www.2cto.com/kf/201503/385492.html 项目中碰到了计算缓存大小和清空缓存的功能,这个很常见的功能,几乎每个APP都有,以为实现很简单,网上搜了一 ...

  9. js中获取URL中指定的查询字符串

    js中获取URL中指定的搜索字符串,主要利用location对象实现,废话少说,上代码. function getSearchString(key) { // 获取URL中?之后的字符 var str ...

随机推荐

  1. idea下启动tomcat时,打印的日志中文乱码

    idea2018.2+tomcat8+java8+win10 异常:将编码方式全都修改为UTF-8后,且tomcat的VM启动参数中配置了:-Dfile.encoding=UTF-8.导致控制台日志打 ...

  2. flask 知识积累

    PythonWEB框架之Flask Flask快速入门,知识整理 Flask 框架

  3. Mybatis-Plus 实战完整学习笔记(七)------select测试二

    1.查询selectOne  (3.0.3版) @Test public void selectMethod() throws SQLException { // 根据ID获取一个对象的数据 Empl ...

  4. poj 1125 Stockbroker Grapevine(最短路径)

    Description Stockbrokers are known to overreact to rumours. You have been contracted to develop a me ...

  5. Python爬虫防封杀方法集合

      Python爬虫防封杀方法集合     mrlevo520 2016.09.01 14:20* 阅读 2263喜欢 38       Python 2.7 IDE Pycharm 5.0.3 前言 ...

  6. WebGIS博客文本分析(词频分析)手动扒取 去除格式 词语分割 统计分析

    1.      [置顶](一)开篇—杂谈WebGIS 摘要: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 ...

  7. 在Echarts 柱形图的单击事件中写入自定义的参数

    标签: 逻辑:(点击柱形图的某个实例(注意:三个柱子表示的是一个实例)) 参考链接:http://echarts.baidu.com/doc/example/event.html { name: ‘c ...

  8. POJ3320 Jessica's Reading Problem 2017-05-25 19:55 38人阅读 评论(0) 收藏

    Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12346   Accep ...

  9. express package.json解析

    教程:http://www.tuicool.com/articles/vuiyIz

  10. js反选

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...