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 ...
最新文章
- Session与request的使用
- 网络营销外包浅析B站破圈运营是如何增强网络营销能力的?
- jQuery UI Widget(1.8.1)工作原理--转载
- Spring基于Setter函数的依赖注入(DI)
- plt.axis()用法详解
- CompletableFuture详解~getNow
- html整体引入js,html页面用js引入js的方式
- 游戏中的“战争黑雾”和现实中的程序员处境
- 使用ladash判断集合中是否有
- java中的枚举_Java中的枚举
- python 判断某个字符是否为中文
- 将VBB文件转换成XML文件
- 那些年你不能错过的之【Linux操作】
- python查找excel中重复数据_python中查找excel某一列的重复数据剔除之后打印
- Axure使用教程(三)、母版、Chart图表元件库
- 模块化开发RequireJS之shim配置
- html背景只向x轴扩散,地球化学(复习资料)
- Tableau 将 null 值显示在 0 处 (ZN 函数 或 显示特殊值)
- SEED LABS初入
- 文件拖到ads快捷方式打不开