Python的io模块详解
Python的io模块提供了多个流式处理接口,具体的处理函数实现位于_pyio.py模块中。
在_io.py模块中,提供了唯一的模块方法open(name, mode=None, buffering=None),但是没有read()方法。
1. io模块的类图
IOBase
-RawIOBase,无缓存的字节流
-+FileIO,操作系统文件流
-BufferedIOBase,缓存的字节流
-+BytesIO
-+BufferedReader
-+BufferedWriter
-+BufferedRandom
-+BufferedRWPair
-TextIOBase,编码相关的文本流
-+StringIO,文本的内存流
-+TextIOWrapper
2. io模块的3种I/O
1) 原始I/O,即RawIOBase及其子类
也被称为无缓存I/O。
操作底层块,既可以用于文本I/O,也可以用于字节I/O。不推荐使用。
f = open("myfile.jpg", "rb", buffering=0)
2) 文本I/O,即TextIOBase及其子类
读取一个str对象,得到一个str对象。
f = open("myfile.txt", "r", encoding="utf-8")
f = io.StringIO("some initial text data")
3) 字节I/O,即BufferedIOBase及其子类
也称为缓存I/O。
读取一个bytes-like对象,得到一个bytes对象。
f = open("myfile.jpg", "rb")
f = io.BytesIO(b"some initial binary data: \x00\x01")
3. io模块中的文本I/O之StringIO类
文本I/O被读取后,就是在内存中的流。这样的内存流,在调用close()方法后释放内存缓冲区。
- StringIO类参数
initial_value='',缓冲区初始值
newline='\n',换行符
- StringIO类的额外的方法
getvalue(),返回一个str,包含整个缓冲区的内容。类似于read(),但是位置指针不移动。
- StringIO类的用法
from io import StringIO
output = StringIO()
output.write('First line.\n')#写入第一行
print('Second line.', file=output)#写入第二行
contents = output.getvalue()
output.close()
参考链接
https://docs.python.org/3/library/io.html
https://github.com/python/cpython/blob/3.6/Lib/io.py
https://github.com/python/cpython/blob/3.6/Lib/_pyio.py
Python的io模块详解相关推荐
- python之sys模块详解_(转)python之os,sys模块详解
python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...
- 【Python】python之subprocess模块详解
[Python]python之subprocess模块详解 subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/out ...
- Python的pickle模块详解(包括优缺点及和JSON的区别)
文章目录 一.pickle是什么? 1.pickle的优缺点 2.pickle和JSON的区别 3.pickle的应用总结 二.pickle的用法 1. pickle接口 2. pickle实例 结语 ...
- Python 文件 IO 操作详解
Python 文件 IO 操作详解 1.文件 IO 常用操作 2.文件打开操作 2.1 打开命令 2.2 命令参数 2.2.1 路径 2.2.2 mode 2.2.3 buffering 缓冲区 2. ...
- python中logging模块详解_python logging日志模块详解
logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...
- python当中时间模块详解,包括time,timeit,datatime
目录 time 模块 -- 时间获取和转换 以下三个比较常见: time.perf_counter() time.process_time() time.sleep(secs) timeit 模块详解 ...
- python re正则模块详解
一. 正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子 ...
- Python的PyYAML模块详解
文章目录 注:原文链接 简介 安装 简单安装 从源码安装 最常被问到的问题 使用详解 加载YAML 转储YAML 构造.表示和解析 YAML语法 文档 块序列 块映射 流集合 标量 别名 标签 YAM ...
- python之re模块详解
re模块 功能:用来匹配字符串(动态.模糊的匹配),爬虫用的多. 一.常用方法: match():从头匹配 search():从整个文本搜索 findall():找到所有符合的 split():分割 ...
最新文章
- 不相关子查询的工作方式是_课题组工作|Nucleic Acids Research|基于表达密度谱的特征子空间分离及相关单细胞转录组分群新算法...
- OpenCV3.4.3DNN 模块中sample-colorization、Easy-textdetector、openpose
- Android的第一天
- antd picker 使用 如何_如何基于jsoneditor二次封装一个可实时预览的json编辑器组件?(react版)...
- jQuery 第三章
- sun end seven game losing streak
- 重构28-Rename boolean method(重命名布尔方法)
- es6阮一峰-import、export学习
- 黄山学院计算机专业考研情况,为什么考入北大的研究生偏偏来自黄山学院这样的学校?...
- CDBPDB USERS AND PRIVILLEGE
- 帆软报表FineReport中数据连接的JDBC连接池属性问题
- Windows 10环境下TensorFlow(gpu版本)配置教程——[图解] [详细版][零基础]
- unity3d 一键截图与调用
- java实验 类和对象_java 实验(三) 类和对象
- 我的世界网易服务器修改世界,我的世界:1.16改变两个版本更新频率?网易版异常乱封大批账号?...
- CS231n作业2中Cython相关问题的处理
- 手把手教你如何写作美赛论文
- 镜像底层原理详解和基于Docker file创建镜像
- 网易实习第一阶段简单回顾
- 邓白氏码、苹果公司/企业开发者账号最新申请流程(2019)