所有程序都要处理输入和输出。所以掌握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的文件,在里面写一首陶渊明的诗。
下面就以这个文件为例子,对上面的三个模式分别说一下。
Rt
在python中有个自带的open()函数,我们可以用这个函数来打开一个文件,既然上一篇讲到了with/as这个语句,所以这里也用一下with/as语句。
读取文件代码如下:
这是一次性读取所有行,我们也可以一行一行的读取,例如:
在这里说一个别人在问答邀请我回答的一个问题,我写个类似的代码给大家看一下:
他说这样的代码报错,读取不到文件,看代码似乎是没有什么问题,辛亏编辑器比较强大,在路径里的\n和其他颜色不一样,没错就是这里出错了,在python中\n是换行符,\n是换行符,那么文件的路径当然就不正确了。
解决方法1:用正斜杠
解决方法2:再加一个\(反斜杠)来转义
解决方式3:在路径前面加一个r,加一个r可以过滤一些特殊字符
解决方式4:改文件名
WT
写入文件也很简单,看下面具体代码:
这里也用了\n换行,还有一种\r\n也是换行的
来看看写入内容:
注意到没有,原来陶渊明的诗没了,所以说wt模式写入文件的话会把原来的内容覆盖。
另一种写入内容的方式:
因为print()函数本来就是换行输出的,所以这种方式写入文件不用换行符也能换行。
AT
上面说道的Wt写入文件会覆盖原内容,但是有时候我们并不想覆盖而是追加,这时候只需要把模式改成at即可,代码例子如下:
再看一下追加内容
最后再说一个编码
大多数在读取或者写入文件都会使用默认utf-8编码,但是有些时候文件不是这个编码,所以在读取或写入文件的时候就会乱码,我们可以在open()函数中加一个编码参数来解决这个问题。
设置中文GBK编码
设置utf-8编码
我这个文件是GBK编码的,来看看上面utf-8编码写入的内容
编码不对,写入的内容就乱码了