目录
第七章 文件操作
01 文件的编码
我们知道,计算机实际上只能识别0和1,那么我们丰富的文本文件是怎么被计算机所识别的呢?
在程序中,无论是我们所输入的文字还是图片视频,都会被转化为无数的0或1,这是因为使用了编码技术(密码本)将内容翻译成0和1存入后的结果。
编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。
在计算机中,有许多可用编码:UTF-8、GBK、Big5等等,不同的编码,将内容翻译成的二进制也是不同的。因此,除非有特殊需求,一律使用全球通用的编码格式UTF-8的格式进行编码即可。
02 文件的读取
在日常的生活中,文件操作主要包括打开、关闭、读和写。
open()函数
可以打开一个已经存在的文件,或者是创建一个新的文件。
#其语法如下
open(name,mode,encoding)
#name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
#mode:设置打开文件的模式(访问模式):只读、写入、追加等
#encoding:编码模式(推荐使用UTF-8)
#注意:此时的'f'是'open'函数的文件对象,对象是Python中的一种特殊的数据类型,拥有属性和方法,可以使用对象. 属性或对象. 方法对其访问,后续面对对象课程会给大家进行详细的介绍。
格式 | 应用 |
r | 一直都方式打开文件文件的指针会存放在文件的开头,这是默认模式。 |
w | 打开一个文件只用于写入。 如果该文件已存在,就打开文件,并从头开始编辑原有内容会被删除,如果该文件不存在创建新文件。 |
a | 打开一个文件用于追加。 如果该文件已存在新的内容会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入。 |
读操作相关方法
1.read()
语法:文件对象. read(num)
功能:num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中的所有数据。
#注意:系统会自动记录上一次读取所结束的位置,下一次读取时从上一次结束的位置开始。
2.readlines()
语法:文件对象. readlines()
功能:readlines 可以按照行的方式把整个文件中的内容进行一次性读取, 并且返回的是一个列表,其中每一行的数据为一个元素。
3. readline()
语法:文件对象. readline()
功能:前面已经知道redlines是按照行的方式读取全部内容, 那么同样的redline就是一次读取一行的内容。
4. For循环读取文件行
语法:for line in 文件对象
5. 文件的关闭
语法:文件对象. close()
6. with open
语法:with open(文件对象) as f:
功能::可以通过with open语句块中对文件进行操作,并且在操作完成后自动关闭文件避免遗忘掉close方法。
总结
序号 | 语法 | 功能 |
1 | 文件对象. read(num) | 读取文件中一定字节数的数据或者读取全部的数据(取决于num的有无) |
2 | 文件对象. readlines() | 按照行的方式把整个文件中的内容进行一次性读取, 并且返回为一个列表,其中每一行的数据为一个元素 |
3 | 文件对象. readline() | 一次读取一行的内容 |
4 | for line in 文件对象 | 利用for循环读取文件中的每一行 |
5 | 文件对象. close() | 关闭文件 |
6 | with open(文件对象) as f: | 简化操作,可以直接打开文件并且在最后省去close语句 |
小练习
复制一下文件并保存
2 1 2 5 6 8 9 7 4 1
4 5 5 8 6 4 4 5 6 9
7 5 6 8 4 1 2 5 3 4
4 5 6 8 4 7 4 2 5 6
通过文件读取操作,读取此文件,并统计5出现的次数
03 文件的写入
通常我们对文件的操作只有打开,读取,写入,关闭,我们已经学习了打开,读取,关闭,剩下的就只有写入了。同时,当我们写入新的内容后,我们还需要对文件进行刷新。所以本节我们主要学习文件的写入和内容刷新两种操作。
1.写入
语法:文件对象. write("写入内容")
2. 刷新
语法:文件对象. flush()
#注意:直接调用write写入时,内容并未真正写入文件,而是会积攒在程序的内存中称之为缓冲区。只有在调用flush刷新后内容才会真正的写入文件。将内容暂时储存在缓冲区的原因是避免频繁操作硬盘导致效率下降。
演示
#注意:f. close()自带flush()功能
04 文件的追加
文件的追加操作与文件的写入方法基本一致,只是将新加的内容写在文件末尾,即将w格式更换为a模式。
在a模式下,文件不存在会创建文件,文件存在则会在文件最后追加并写入内容。