前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python的io模块详解

Python的io模块详解

作者头像
py3study
发布2020-01-09 15:42:01
1.5K0
发布2020-01-09 15:42:01
举报
文章被收录于专栏:python3python3python3

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档