当前位置: 首页 > news >正文

淮安市建设局网站首页中国电建成都设计院

淮安市建设局网站首页,中国电建成都设计院,广西建设厅官方网站电话,h5制作平台官网免费任务 需要创建一个输入文件对象(数据可能来自于网络socket 或者其他输入文件句柄),此文件对象允许回退到起点,这样就可以完全读取其中所有数据。 解决方案 将文件对象封装到一个合适的类中: 将文件对象封装到一个合适的类中: from cStringIO import …

任务

需要创建一个输入文件对象(数据可能来自于网络socket 或者其他输入文件句柄),此文件对象允许回退到起点,这样就可以完全读取其中所有数据。

解决方案

将文件对象封装到一个合适的类中:

将文件对象封装到一个合适的类中:
from cStringIO import StringIO
class RewindableFile(obiect):
'''封装一个文件句柄以便重定位到开始位置'''def __init__(self,input_file):#将input_file 封装到一个支持回退的类文件对象中#self.file = input_fileself.buffer_file = StringIO()self.at_start = Truetry :self.start = input_file.tell()except(IOError,AttributeError):self.start = 0self,use_buffer = True
def seek(self,offset,whence = 0):
'''根据给定的字节定位。
必须:whence == 0 and offset == self.start 
'''if whence != 0:raise ValueError("whence = %r;expecting 0" %(whence,))if offset != 0raise ValueError("offset = %r;expecting %s" %(offset,self.start))self.rewind()
def rewind(self):'''回到起始位置'''self.buffer_file.seek(0)self.at_start = True
def tell(self):'''返回文件的当前位置(必须在开始处)'''if not self.at_start:raise TypeError("RewindableFile can't tell except at start of file")return self.start
def _read(self,size):if size < 0:#一直读到文件末尾y = self.file.read()if self._use_buffer:self.buffer_file.write(y)return self.buffer_file.read() + yelif size == 0:#不必读空字符串return "x= self.buffer_file.read(size)if len(x) < size:y = self.file.read(size - len(x))if self._use_buffer:self.buffer_file.write(y)return x + yreturn x
def read(self,size = -1):
'''根据size指定的大小读取数据
默认为-1,意味着一直读到文件结束
'''x = self.read(size)if self.at_start and x:self.at_start = Falseself._check_no__buffer()return x
def readline(self):
'''从文件中读取一行'''
# buffer_file中有吗?s =self.buffer_file.readline()if s[-1:] == "\n":return s#没有,从输入文件中读取一行t = self.file.readline()if self._use_buffer:self.buffer_file.write(t)self._check_no_buffer()return s + t
def readlines(self):
'''读取文件中所有剩余的行'''return self.read().splitlines(True)
def _check_no_buffer(self):
#如果"nobuffer"被调用,而且我们也完成了对缓存文件的处理
#那就删掉缓存,把所有的东西都重定向到原来的输入文件if not self._use_buffer and self.buffer_file.tell() == len(self.buffer_file.getvalue()):
#为了获得尽可能高的性能,我们重新绑定了self中的所有相关方法for n in'seek tell read readline readlines',split():setattr(self,n,getattr(self.file,n,None))del self.buffer_file
def nobuffer(self):
'''通知 Rewindablerile,一旦缓存耗尽就停止继续使用缓存'''self._use_buffer = False

讨论

太长了,此处省略。

http://www.dtcms.com/a/458572.html

相关文章:

  • Java--文件操作和IO
  • 收费的网站怎么做的哪个小说网站可以做封面
  • Kotlin when 用法完整分享
  • 巩义网站建设汕头市网络推广报价
  • 有哪些网站建设工作推广文案怎么写
  • 深圳宝安建网站动漫制作专业要多少分
  • Python爬虫优化实战:高效稳定爬图技巧
  • wordpress网站更新合水网站建设
  • 获取印度尼西亚股票数据API完全指南
  • 深圳建设网官方网站wordpress官方模板
  • 北京代理记账公司电话山西seo优化公司
  • 2025年免费网盘实用指南
  • fpga实现灰度质心法求取质心
  • 深圳微网站开发佛山制作网站企业
  • 网站制作流程论文wdcp设置网站安全
  • 深入解析 Spec Kit 工作流:基于 GitHub 的 Spec-Driven Development 实践
  • ArrayList - 如何实现数组和List之间的转换
  • 江淮网站开发邮件订阅 wordpress
  • 用html做网站源代码wordpress表单数据前台显示图片
  • 贵州省网站集约化建设青岛黄岛网站建设公司电话
  • 申请免费网站需要什么条件许昌网页制作
  • 济南环保行业网站开发群晖wordpress安装主题下载失败
  • 宁波建网站哪家好用点企业vi设计公司报价
  • YOLO入门教程(番外):YOLOv3创新思想及整体架构
  • 软件需求表文档与软件开发设计方案:核心区别及阶段归属解析
  • vue.js合作做网站么买了网站主机后如何建设网站
  • 三亚建设网站手机网站建设教材
  • IMX6ULL学习笔记_Boot和裸机篇(5)--- IMX6ULL使用ECSPI3驱动Flash启动程序
  • 传输层:TCP协议
  • 网站团购功能怎么做wordpress的模板制作