所有程序都要处理输入和输出。所以掌握python的文件和IO的知识点也是很重要的。IO就是输入/输出(Input/Output)。

首先介绍python中常用的3种模式:

1、 rt,文件读取模式

2、 wt,写入模式

3、 at,追加模式

英语比较差,开始一直不懂为什么要用这几个字母来代表这几种模式,在网上也搜不到为什么要用这几个字母,后来我想大概他们应该是英文的缩写。

1、 rt,read text,读取文本

2、 wt,write text,写入文本

3、 at,append text,追加文本

感觉没毛病,都对应上了,应该就是这几个单词的缩写,突然发现自己还是有学英语的潜力的。

如果不是上面的几个意思欢迎大家批评指正。

首先我在我的D盘python目录下新建一个python.txt的文件,在里面写一首陶渊明的诗。

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

下面就以这个文件为例子,对上面的三个模式分别说一下。

Rt

在python中有个自带的open()函数,我们可以用这个函数来打开一个文件,既然上一篇讲到了with/as这个语句,所以这里也用一下with/as语句。

读取文件代码如下:

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

这是一次性读取所有行,我们也可以一行一行的读取,例如:

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

在这里说一个别人在问答邀请我回答的一个问题,我写个类似的代码给大家看一下:

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

他说这样的代码报错,读取不到文件,看代码似乎是没有什么问题,辛亏编辑器比较强大,在路径里的\n和其他颜色不一样,没错就是这里出错了,在python中\n是换行符,\n是换行符,那么文件的路径当然就不正确了。

解决方法1:用正斜杠

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

解决方法2:再加一个\(反斜杠)来转义

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

解决方式3:在路径前面加一个r,加一个r可以过滤一些特殊字符

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

解决方式4:改文件名

WT

写入文件也很简单,看下面具体代码:

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

这里也用了\n换行,还有一种\r\n也是换行的

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

来看看写入内容:

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

注意到没有,原来陶渊明的诗没了,所以说wt模式写入文件的话会把原来的内容覆盖。

另一种写入内容的方式:

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

因为print()函数本来就是换行输出的,所以这种方式写入文件不用换行符也能换行。

AT

上面说道的Wt写入文件会覆盖原内容,但是有时候我们并不想覆盖而是追加,这时候只需要把模式改成at即可,代码例子如下:

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

再看一下追加内容

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

最后再说一个编码

大多数在读取或者写入文件都会使用默认utf-8编码,但是有些时候文件不是这个编码,所以在读取或写入文件的时候就会乱码,我们可以在open()函数中加一个编码参数来解决这个问题。

设置中文GBK编码

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

设置utf-8编码

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

我这个文件是GBK编码的,来看看上面utf-8编码写入的内容

python学习之路(16):文件与IO之常见的几个文件读写模式介绍

编码不对,写入的内容就乱码了