Python中BufferedIOBase
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相关推荐
- python中的open函数
python中的open函数 open函数用于文件处理 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 1 文件句柄 = open('文件路径', '模式') 打开文件时,需要指 ...
- Python中IO概述
Python中的io模块是用来处理各种类型的I/O操作流.主要有三种类型的I/O类型:文本I/O(Text I/O),二进制I/O(Binary I/O)和原始I/O(Raw I/O).它们都是通 ...
- 如何优雅的在python中暂停死循环?
死循环 有时候在工作中可能会遇到要一直执行某个功能的程序,这时候死循环就派上用途了,python中死循环的具体形式大致如下 while True:run_your_code() 结束死循环 通常我们结 ...
- 关于python中的dict和defaultdict
dict 在Python中如果访问字典中不存在的键,会引发KeyError异常,所以一般当我们比如统计一句话的词频时候,我们总是使用这样的处理方式: strings = ('puppy', 'kitt ...
- python中的新式类与旧式类的一些基于descriptor的概念(上)
python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...
- 逗号分隔的字符串转换为Python中的列表 split
将逗号分隔的字符串转换为Python中的列表 给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符串转 ...
- [翻译]Python中yield的解释
问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...
最新文章
- centos7升级自带的php5.4版本到php5.6
- python导入csv文件-python读写csv文件
- BUUCTF--pwn picoctf_2018_buffer overflow 0
- [转载]智能科普:VR、AR、MR的区别
- 主线程如何与次线程用全局变量通讯
- break continue区别和用法_因为不知道break和contiue的核心区别,他在初试就被刷了下来...
- 移动电话之父第一个电话打给对手,起底现代移动通信崛起之路!
- 自动驾驶算法-滤波器系列(六)——10+种经典滤波算法
- Matlab多光谱kmeans聚类分割
- 自定义流程gooflow.08 demo在线演示
- raspberrypi连接神经计算棒人脸识别
- C++下的utility
- OllyDbg基本使用
- 2021-06-22ctf学习wp模板
- javascript技巧收集(200多个)
- c语言未定义main报错,C语言编译器的错误信息
- excel怎么拆分表格之按照关键词拆分表格数据
- 宋宝华Linux培训笔记-Linux多线程
- python语音识别分析_python数据建模分析 - 语音识别
- 类的继承层次结构的宽度和深度