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模块详解相关推荐

  1. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

  2. 【Python】python之subprocess模块详解

    [Python]python之subprocess模块详解 subprocess模块 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/out ...

  3. Python的pickle模块详解(包括优缺点及和JSON的区别)

    文章目录 一.pickle是什么? 1.pickle的优缺点 2.pickle和JSON的区别 3.pickle的应用总结 二.pickle的用法 1. pickle接口 2. pickle实例 结语 ...

  4. Python 文件 IO 操作详解

    Python 文件 IO 操作详解 1.文件 IO 常用操作 2.文件打开操作 2.1 打开命令 2.2 命令参数 2.2.1 路径 2.2.2 mode 2.2.3 buffering 缓冲区 2. ...

  5. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

  6. python当中时间模块详解,包括time,timeit,datatime

    目录 time 模块 -- 时间获取和转换 以下三个比较常见: time.perf_counter() time.process_time() time.sleep(secs) timeit 模块详解 ...

  7. python re正则模块详解

    一. 正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子 ...

  8. Python的PyYAML模块详解

    文章目录 注:原文链接 简介 安装 简单安装 从源码安装 最常被问到的问题 使用详解 加载YAML 转储YAML 构造.表示和解析 YAML语法 文档 块序列 块映射 流集合 标量 别名 标签 YAM ...

  9. python之re模块详解

    re模块 功能:用来匹配字符串(动态.模糊的匹配),爬虫用的多. 一.常用方法: match():从头匹配 search():从整个文本搜索 findall():找到所有符合的 split():分割 ...

最新文章

  1. 不相关子查询的工作方式是_课题组工作|Nucleic Acids Research|基于表达密度谱的特征子空间分离及相关单细胞转录组分群新算法...
  2. OpenCV3.4.3DNN 模块中sample-colorization、Easy-textdetector、openpose
  3. Android的第一天
  4. antd picker 使用 如何_如何基于jsoneditor二次封装一个可实时预览的json编辑器组件?(react版)...
  5. jQuery 第三章
  6. sun end seven game losing streak
  7. 重构28-Rename boolean method(重命名布尔方法)
  8. es6阮一峰-import、export学习
  9. 黄山学院计算机专业考研情况,为什么考入北大的研究生偏偏来自黄山学院这样的学校?...
  10. CDBPDB USERS AND PRIVILLEGE
  11. 帆软报表FineReport中数据连接的JDBC连接池属性问题
  12. Windows 10环境下TensorFlow(gpu版本)配置教程——[图解] [详细版][零基础]
  13. unity3d 一键截图与调用
  14. java实验 类和对象_java 实验(三) 类和对象
  15. 我的世界网易服务器修改世界,我的世界:1.16改变两个版本更新频率?网易版异常乱封大批账号?...
  16. CS231n作业2中Cython相关问题的处理
  17. 手把手教你如何写作美赛论文
  18. 镜像底层原理详解和基于Docker file创建镜像
  19. 网易实习第一阶段简单回顾
  20. 邓白氏码、苹果公司/企业开发者账号最新申请流程(2019)

热门文章

  1. Linux驱动——mmc sd card初始化流程(十一)
  2. SAP GUI 770 百度网盘下载
  3. 小型企业、初创企业海外众筹指南
  4. yocto项目下载与编译
  5. html中创建电子邮件链接
  6. 福建省一级计算机考试文字录入,2015福建省机关事业工勤人员计算机文字录入员工作总结.doc...
  7. [LBS学习笔记4]地理特征POI、AOI、路径轨迹
  8. 一个好玩的辞职信HTML版
  9. p5.js创意绘图(1)动态图形
  10. 将git项目提交到其他的git仓库