class io.BufferedIOBase
  是支持某些缓冲区的二进制流的基类。它继承自IOBase,没有公共的构造器。和RawIOBase主要的区别在于,方法read(),readinto()和write()会尽可能(分别)的多读所请求的输入或者尽可能的输出所有给定的输出,以牺牲多个系统调用为代价。

  另外,如果底层原始流处于非阻塞模式并且无法获取或提供足够的数据时,那些方法可能会引发BlockingIOError错误;和RawIOBase不同的是,他们永远不会返回None。

  此外,read()方法没有一个按照readinto()的默认实现。

  典型的BufferedIOBase的实现不应该继承自RawIOBase实现,但是wrap部分,比如BufferedWriter和BufferedReader却是继承自RawIOBase的实现。

  BufferedIOBase提供或者重写了从IOBase中继承来的属性和方法。
raw:
BufferedIOBase处理的底层原始流,这不是BufferedIOBase的API的一部分,可能在某些实现中不存在。

detach()将底层原始流从缓冲区中分开并返回在原始流被分离之后,该缓冲区变为不可用状态某些缓冲区,比如BytesIO,没有从该方法中返回单个原始流的概念,它们会引UnsupportedOperation。read(size=-1)读取并返回至多size大小的字节。如果参数被省略,或者为None,或者为负数,那么读取 直到遇到EOF才停止,并且将数据返回。
如果流中游标已经是EOF处,那么返回的是一个空的字节对象。如果参数是正数,并且底层原始流不是可交互式的,那么发出多个原始读取操作以读满需要的字节数(除非首先到达EOF)。但是对于交互式原始流,最大只会发出一个原始读取操作,短的结果并不意味着即将遇到EOF。如果底层原始流处于非阻塞模式,并且目前没有可用数据,则会引发BlockingIOError错误。readl(size=-1)读取并返回至多size大小的字节,最多值只能调用一次预测底层原始流的read()(或者readinto()方法)方法。这将是非常有用的,如果您在BufferedIOBase对象上实现自己的缓冲区。readinto(b)读取字节到一个已经指定大小的,可以写的类字节对象b中,并且返回读取的字节数。和read()类似,多个读取操作可能被发给底层原始流,除非后者是可交互的。如果底层原始流处于非阻塞模式,并且目前没有可用数据,则会引发BlockingIOError错误。readintol(b)读取字节到一个已经指定大小的,可写的类字节对象b中,最多只能调用一次底层原始流的read()(或者readinto())方法。
返回读取的字节数量。如果底层原始流处于非阻塞模式,并且目前没有可用数据,则会引发BlockingIOError错误。write(b)将给定的类字节对象b写入,并且返回写入的字节数(总等于b的长度(以字节为单位),如果写入失败,则会引发OSError)。根据实际的实现,这些字节可能正准备写入到底层流中,或者由于性能和延迟原因而被保存在缓冲区中。当在非阻塞模式下时,如果数据需要写入原始流,但是不使用阻塞又无法接受所有数据时,则会引发BlockingIOError错误。该方法返回后,调用者可能会释放或者改变b对象,所以在调用该方法期间,实现部分只能访问对象b。

Python中BufferedIOBase相关推荐

  1. python中的open函数

    python中的open函数 open函数用于文件处理 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = open('文件路径', '模式') 打开文件时,需要指 ...

  2. Python中IO概述

      Python中的io模块是用来处理各种类型的I/O操作流.主要有三种类型的I/O类型:文本I/O(Text I/O),二进制I/O(Binary I/O)和原始I/O(Raw I/O).它们都是通 ...

  3. 如何优雅的在python中暂停死循环?

    死循环 有时候在工作中可能会遇到要一直执行某个功能的程序,这时候死循环就派上用途了,python中死循环的具体形式大致如下 while True:run_your_code() 结束死循环 通常我们结 ...

  4. 关于python中的dict和defaultdict

    dict 在Python中如果访问字典中不存在的键,会引发KeyError异常,所以一般当我们比如统计一句话的词频时候,我们总是使用这样的处理方式: strings = ('puppy', 'kitt ...

  5. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  6. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  7. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  8. 逗号分隔的字符串转换为Python中的列表 split

    将逗号分隔的字符串转换为Python中的列表 给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符串转 ...

  9. [翻译]Python中yield的解释

    问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...

最新文章

  1. centos7升级自带的php5.4版本到php5.6
  2. python导入csv文件-python读写csv文件
  3. BUUCTF--pwn picoctf_2018_buffer overflow 0
  4. [转载]智能科普:VR、AR、MR的区别
  5. 主线程如何与次线程用全局变量通讯
  6. break continue区别和用法_因为不知道break和contiue的核心区别,他在初试就被刷了下来...
  7. 移动电话之父第一个电话打给对手,起底现代移动通信崛起之路!
  8. 自动驾驶算法-滤波器系列(六)——10+种经典滤波算法
  9. Matlab多光谱kmeans聚类分割
  10. 自定义流程gooflow.08 demo在线演示
  11. raspberrypi连接神经计算棒人脸识别
  12. C++下的utility
  13. OllyDbg基本使用
  14. 2021-06-22ctf学习wp模板
  15. javascript技巧收集(200多个)
  16. c语言未定义main报错,C语言编译器的错误信息
  17. excel怎么拆分表格之按照关键词拆分表格数据
  18. 宋宝华Linux培训笔记-Linux多线程
  19. python语音识别分析_python数据建模分析 - 语音识别
  20. 类的继承层次结构的宽度和深度

热门文章

  1. 上海市职业介绍中心长宁分中心武夷路513-517号(021)62400032-229
  2. 将PHP文件生成静态文件源码
  3. oracle,EBS的库存数据视图
  4. IT人母亲的美国之行(4)
  5. 结合 live-reload 实现自动刷新
  6. Serverless 实战 —— 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
  7. 面试官系统精讲Java源码及大厂真题 - 35 经验总结:各种锁在工作中使用场景和细节
  8. Redis面试 - 如何保证 redis 的高并发和高可用?
  9. REST API 概念的简单介绍
  10. 表关联使用INNER JOIN实现更新功能