Python IO编程

IO 在编程语言中特指输入和输出「即 input 和 output」。在 IO 编程中 stream (流)是一个重要的概念,一个完整的 IO 操作通常含有 input 和 output 两个数据流,我们称之为输入流和输出流。

由于 CPU 和内存的速度远远超过外设的速度,因此 IO 操作通常分为同步和异步两种方式,我们生活中所使用的操作系统通常情况下设计到 IO 操作的均使用的是异步 IO。那么同步 IO 和异步 IO 的区别是什么

同步 IO:即在遇到外设读取数据时,CPU 停止后续代码的执行,等待 IO 读取完成在接着执行剩余的代码。

异步 IO:即在遇到外设读取数据时,CPU 继续执行其他的代码,待 IO 读取完成在返回处理相关数据。

同步 IO 和异步 IO 最大的区别在遇到外设长时间读取数据时,CPU 是否等待 IO 的执行结果。

异步 IO 的性能远远高于同步 IO,但异步 IO 的复杂度远远高于同步 IO。操作 IO 的能力都是由操作系统提供的,每一种编程语言都会讲操作系统提供的接口进行封装以方便使用。

在 python 中常用的 IO 操作有文件读写、内存读写等。

文件读写

文件的读写是最常用的操作,Python 中内置了操作文件的函数,在使用方法上与 C 语言是兼容的。在现代操作系统上读写文件的功能都是由操作系统提供的,Python 中的文件读写实际上是对操作系统提供的一个文件对象的读写。

在 Python 中操作文件的函数主要有打开文件、读文件、写文件、关闭文件。

打开文件的函数如下:

open 函数的 mode 的设置值有以下几种

读文件的函数如下:

写文件的函数如下:

关闭文件的函数如下:

在对一个文件进行操作之前,必须先使用打开文件,以获取文件对象。下面是一个完整的文件读写程序

以上代码在运行时没有任何的输出,这是由于使用 open 函数的 mode 参数仅仅设置为写模式,让我们对以上代码进行修改在进行运行

此时在次运行上面的代码,我们可以看到控制台输出了hello world!。

文件读写的过程中不可避免的会出现 IOError, 当出现错误后面的代码就不会执行,如果按我们以上的代码执行,不可避免的会造成文件没有正常关闭会使系统重复生成文件对象浪费资源,为了保证能够正常关闭文件,我们可以使用 try...finally 来实现。我们将以上代码进行修改如下

以上代码虽然解决了文件不能正常关闭的问题,但是我们却为此编写了大量的 try...finally 代码,看起来也不是很美观,没关系,python 为我们准备 with 关键字来解决以上问题,

现在看起来是不好多了。

内存读写

python 通过 StringIO 和 BytesIO 来读写内存中的数据。StringIO 顾名思义就是读写内存中的字符串。BytesIO 用来读写内存中的二进制数据。

以下是 StringIO 的简单实用示例

以下是 BytesIO 的简单实用示例

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20190113G05BAG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券