目录
一、编码格式
二、文件的读写
1、文件读写的原理
2、文件读写的操作
三、常用的文件打开模式
1、文件类型
2、文件的打开模式汇总
四、文件对象的常用方法
一、编码格式
常见的字符编码格式比如Python解释器使用的是Uincode(内存),.py文件在磁盘上使用UTF-8存储(外存)。
.py由于默认是使用UTF-8来存储数据,那么假如我不想使用UTF-8存储了,怎么处理呢?
那就是在.py的最上面加上一句encoding=………(你想要的编码格式)即可。不同的编码格式决定了占用磁盘空间的大小。
二、文件的读写
1、文件读写的原理
文件的读写俗称“IO操作”,其流程如下图所示:
.py文件由解释器执行,然后调用OS操作系统去操作硬盘上的文件(对此文件进行读写操作)。进行读写操作的过程是:首先打开或新建文件,然后对文件进行读写操作,数据从外界往内存里面进的操作称为读操作,反之,内存往外界输出数据称为写操作。操作完成后关闭资源(关闭操作系统的资源)。
IO操作的原理就是队列的原理——先进先出。下图数据如管道一样,先进来的数据先输出出去,插不了队。
2、文件读写的操作
Mode是r表示是读操作,mode是w表示是写操作。
(1)读操作
我之前在chap14的文件夹里面新建了一个txt文件,文件命名为a,里面的内容是“中国”二字。现在我要在一个.py文件里面读它。
于是我要先打开文件:file=open('a.txt','r',)
然后输出文件里面的东西:print(file.readlines())
最后关闭文件:file.close()
运行后发现出现了这样的一个问题:UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal multibyte sequence
这个问题翻译过来是:“GBK”编解码器无法解码位置2的字节0 xad:非法多字节序列。
后来我查询博客,得知错误原因在于:encoding默认的不是读取中文字符的,需要重新定义为能识别中文字符的。
因此解决方法就是:在open中多加一个参数:encoding = “UTF-8”
如图所示便可以成功输出了。
(2)写操作
写操作的大致步骤如上图所示。以写模式打开文件时,如果文件不存在则创建文件,若文件存在则覆盖其原有的内容,文件格式在文件的开头。
经过这样的操作后,我们可以发现b确实被顺利的创建出来了,然后里面的内容也是我输入的东西。
三、常用的文件打开模式
1、文件类型
2、文件的打开模式汇总
读写操作上面说了,这里不说了。
(1)追加模式a
当我把模式改成a,也就是改成追加模式时,我再运行一下程序,会发现:
里面有两组输出的东西。
因此追加模式的作用就是重复进行写操作。可以进行无数次。
(2)二进制模式b
上图是使用此模式进行对图片的复制操作。
复制完成。
(3)读写模式+
这个模式不能单独使用。
四、文件对象的常用方法
1、read()
直接这样的话是读取文件中的所有内容,而如果给read的括号里面加上个数字2,则会读取文件的前两个字符。
2、readline()
从文本中读取一行的数据。
3、readlines()
输出每一行的内容,并把每一行都存入一个列表当中。
4、write()
普通操作见“二”
我们还可以把列表元素给写入到文本中去。具体操作见下图:
我们能看到列表确实被写入了进去:
5、seek()
Seek操作是改变文件指针的位置,如下图所示的实例:
由于汉字占两个字节,因此第六行的seek括号里写的2,因此输出会跳过中,从国开始输出。如果seek括号里面写的是1的话就会报错,因为汉字不能分一半输出。
6、tell()
使用这个方法的话会输出指针当前的位置。
上图所示的程序是跳过前两个字母然后进行读操作,最后返回指针所在位置。