13.2.1 文本I/O

来源:互联网 发布:91act 知乎 编辑:程序博客网 时间:2024/05/17 22:34

13.2 io--输入输出功能

本模块提供了面向不同I/O类型的处理功能,基本是三种类型:文本I/O,二进制I/O和原始I/O。面向操作这些I/O的对象封装叫做文件对象,或者文件类型对象。三种类型的操作函数对输入参数的要求是不一样的,比如文本的函数就不能输入二进制参数,二进制的函数就不能输入文本的参数,否则都会抛出异常。

13.2.1 文本I/O

文本I/O提供处理str字符串对象,要求输入的参数是字符串对象,返回的对象也是字符串对象。因此,文本模块封装了从文本转换到二进制的功能,包括对文本进行编码、解码等工作,对于使用者来说,不用关心这些处理过程,完全透明的。最简单的使用方式就是使用open()打开文件对象:

f = open("myfile.txt", "r", encoding="utf-8")

在这个函数里myfile.txt是文件名称,r是表示对文件进行读取,encoding是编码的参数,采用utf-8对二进制数据读取之后转换为字符串的解码方式。

 

在内存里操作的文本流也可以使用StringIO对象来表示:

f = io.StringIO("some initial text data")

13.2.2 二进制I/O

二进制I/O,也被称为buffered I/O,它处理参数和返回的对象都基于bytes类型的对象。不用对数据进行编码、解码、以及换行符之类的操作。最方便打开一个二进制I/O操作的方式就是采用b方式打开文件:

f = open("myfile.jpg", "rb")

在这里,myfile.jpg是文件的名称,rb是表示对文件进行读取,按二进制的方式读取,然后返回二进制文件对象f

 

内存里采用二进制I/O方式,可以使用BytesIO对象:

f = io.BytesIO(b"some initial binary data: \x00\x01")

13.2.3 原始I/O

原始I/O方式也叫做非缓存I/O方式,提供了最低层次的二进制或文本流的读写功能。创建这种方式最简单的方法是使用二进制的模式b打开,并且把缓冲区关闭,如下:

f = open("myfile.jpg", "rb", buffering=0)

13.2.4 模块的高级接口

io.DEFAULT_BUFFER_SIZE

I/O操作时默认数据缓冲区的大小。

 

io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

这个函数是内置函数open()的别名。

 

exception io.BlockingIOError

与内置异常BlockingIOError一样。

 

exception io.UnsupportedOperation

当调用一个流对象不支持的操作时抛出的异常。


蔡军生 QQ:9073204  深圳

0 0
原创粉丝点击