python io模块_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值