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()
时间: 2024-10-11 06:08:52

cStringIO 实现指定大小的字符串缓存的相关文章

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

Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等.我们开发产品的时候,可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比较人性化的设计点.例如笔者参与开发的一款产品的设置界面就提供了清除缓存的功能,如下图所

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

Android开发记录20-获取缓存大小和清除缓存功能 转载请注明:IT_xiao小巫 博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要给大家分享的如何获取应用缓存的大小和清除缓存的功能,我们知道我们应用当中经常会产生一些数据,比如图片的缓存,数据库文件,配置文件等等.我们开发产品的时候,可能会有这样的一个需求清除应用内缓存的数据,可以让用户选择删除应用内产生的数据,这也是比较人性化的设计点.例如笔者参与开发的一款产品的设置界面就提供了清除缓存的功能,如下图所

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

源:Delphi中建立指定大小字体和读取该字体点阵信息的函数 Delphi中建立指定大小字体和读取该字体点阵信息的函数 作者:Thermometer Email:  [email protected] 由于要控制硬件,需要把矢量的汉字转化为点阵信息写入eprom或在液晶屏上显示,因此用Delphi写了如下的函数,可以把指定的一个汉字(两个字符)转化为点阵信息保存到文件,每个点对应一个二进制位,有文字信息该位为1,否则为0. 目前该函数可以生成指定大小的汉字并可读取点阵字模信息保存到文件. 如Co

Java 按照指定长度分割字符串(一种是纯英文字符串,一种是英汉混合的字符串)

最近在实现一个文稿导读功能时候用到字符串切割,简单说一下这个文稿导读,就是打开本地一个txt文件,展示在界面上,提供一个开始/暂停的button.开始,文本自动移动变红,速度自己可以控制,就是像歌词那样,一行一行的自动移动,变色的一行始终是展示的控件的中间.为什么用到字符串的切割呢?是因为不用分辨率和不同尺寸的屏幕显示字的个数是不一样的.在实现的时候我就想到根据展示控件(这里是自定义的TextView)的大小串来切割字符串的,以适应不同设备.在下一篇文章中实现这个"文稿导读"的功能,这

小数据池 (常量池 -> 字符串缓存) is和==的区别 重新看编码 以及编码之间相互转化

?. 小数据池 在说小数据池之前. 我们先看一个概念念. 什么是代码块: 根据提示我们从官?方?文档找到了这样的说法: A Python program is constructed from code blocks. A block is a piece of Python program text that is executed as a unit. The following are blocks: a module, a function body, and a class defin

【Android】自定义圆形ImageView(圆形头像 可指定大小)

最近在仿手Q的UI,这里面经常要用到的就是圆形头像,看到 在android中画圆形图片的几种办法 这篇文章,了解了制作这种头像的原理.不过里面提供的方法还有一个不足的地方就是不能根据实际需求改变图片的大小,也就是说提供的原图是大尺寸的,转换之后的图片也是大尺寸的,这显然不符合我们实际项目中的需求.于是我对里面介绍的第一种方法做了一番改进,使其能直接在XML中指定图片的大小. 大体步骤 将原图居中裁剪成正方形 根据指定的宽度对正方形进行缩放 裁剪成圆形 效果 代码实现 package com.de

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file 输入文件名,缺省为标准输入. of=file 输出文件名,缺省为标准输出. ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节). obs=b

生成指定长度的字符串

#region 生成指定长度的字符串 2 /// <summary> 3 /// 生成指定长度的字符串,即生成strLong个str字符串 4 /// </summary> 5 /// <param name="strLong">生成的长度</param> 6 /// <param name="str">以str生成字符串</param> 7 /// <returns></re

截取UIImage指定大小区域

截取UIImage指定大小区域 最近遇到这样的需求:从服务器获取到一张照片,只需要显示他的左半部分,或者中间部分等等.也就是截取UIImage指定大小区域. UIImage扩展 我的解决方案是对UIImage进行扩展.通过CGImageRef和CGImage完成截取,调用的方法是:CGImageCreateWithImageInRect.扩展类叫UIImage+Crop,具体代码如下: UIImage+Crop.h #import <UIKit/UIKit.h> typedef NS_ENUM