极客小将

您现在的位置是:首页 » 原创课程 » Python

课程内容

Python入门课程NO68课 StringIO与BytesIO

极客小将2020-09-02-
我们通过open方法来打开硬盘上的文件,并获得一个文件流对象,然后通过文件流对象对文件进行读写操作。计算机中的存储设备按其访问速度和容量大小,被组织成了下图所示的金字塔形状的层次结构:我们读写的硬盘文件,存储在外存储器中,从图可看出在硬盘中进行数据读写,远慢于

我们通过open方法来打开硬盘上的文件,并获得一个文件流对象,然后通过文件流对象对文件进行读写操作。计算机中的存储设备按其访问速度和容量大小,被组织成了下图所示的金字塔形状的层次结构:

我们读写的硬盘文件,存储在外存储器中,从图可看出在硬盘中进行数据读写,远慢于在内存中进行数据读写。在本节的内容中,要介绍的是StringIO与BytesIO,通过这两个模块可以直接在内存中进行数据读写。

StringIO:通过StringIO可以获取一个基于内存的流对象。StringIO就是在内存中对字符串进行读写操作。构造StringIO的方法:StringIO(initial_value='', newline='\n')

参数initial_value用来传递一个初始值,默认为空字符串。newline用来定义换行符,默认为'\n'。通过StringIO获取的内存流对象,与通过open方法获取的文件流对象,都有相同的接口。通过文件流对象的read, write,seek等方法对文件进行读写操作,同样也可以通过内存流对象的read,write,seek等方法来进行数据的读写操作。此外,StringIO对象还提供了一个getvalue方法,用来读取缓冲区中的全部数据。

BytesIO:BytesIO类似于StringIO,区别在于BytesIO用来在内存中对bytes类型进行读写。 执行字符串类型的encode方法,可以转换为bytes类型。执行bytes类型的decode方法可以转换为字符串类型。

BytesIO([initial_bytes]):[]表示里面的参数为可选参数,参数initial_bytes表示初始化的bytes类型的数据。

在对BytesIO对象执行getbuffer方法时,会返回一个可读写的视图对象。只要视图对象存在,就不能对缓冲区的大小进行调整和关闭。如需对缓冲区的大小进行调整或关闭,可以通过del来删除该视图对象。


网友点评

共有5条评论来说两句吧...