python 文件操作
一. 文件作用
用于永久储存数据,让程序下次执行时直接使用
二. 文件读写操作
文件操作流程
- 选择 操作模式打开文件
- 对文件进行读写操作
- 关闭文件
1. 读取文件数据
以只读形式打开文件分为两种操作模式分别是字符串“r”
和二进制(字节)“rb”
⑴ 打开文件
① “r” 以字符串的方式读取文件中的数据
格式为: 变量名 = open(“打开文件的路径及文件名”, “r”, encoding="utf-8")
- 若不指定路径仅有文件名, 表示操作当前目录中的文件
- 若指定的文件不存在, 会报错
"r"
为默认打开文件操作模式, 即若不指定操作模式就会以"r"
模式打开- 以该操作模式打开文件, 则仅能对全字符串文件做读取数据处理,若出现非字符串数据( 图片、视频、音乐)会报错。
- 由于
Windows
系统 的python解释器
默认使用GBK
编码格式打开文件(不认识中文),因此需要指定编码格式为UTF-8
。但是mac
和linux
的python解释器
默认使用UTF-8
②"rb" 以字节(二进制)的方式读取文件中的数据
格式为: 变量名 = open(“打开文件的路径及文件名”, “rb”)
- 若不指定路径仅有文件名, 表示操作当前目录中的文件
- 若指定的文件不存在, 会报错
- 以该操作模式打开文件,可以对所有格式文件(包括图片、视频、音乐)进行读取数据处理操作,但是在显示时只会显示进制数字,不会显示为字符串、图片、视频等。
⑵ 读取文件内容
格式为: 变量名.read(读取数据个数)
- 若不指定
读取数据个数
则会一次性将文件数据全部读取出来 - 若
读取数据个数
指定为100
, 则表示最多读取文件中的100个字符(“r”)或字节(“rb”)
- 在
“r”
模式中空格
、中文
和换行
皆算一个字符 - 在
“rb”
模式中空格
算一个字节中文
和换行
皆算三个字节, 并且在取中文的三个字节时若三个字节没取完整,读时会报错
格式为: 变量名.readline()
- 默认表示读取一行内容
- 若添加数字参数, 则表示读取参数所有字符(“r”)或字节(“rb”)所在行(如参数为100, 并且这100个字符(“r”)或字节(“rb”)占4行, 那么就会显示4行内容), 返回为一个列表其中包含多个字符串(一行内容为一个字符串), 换行使用
\n
表示 放在字符串末尾
格式为: 变量名.readlines()
- 默认表示读取所有内容, 返回为一个列表其中包含多个字符串(一行内容为一个字符串), 换行使用
\n
表示 放在字符串末尾
注意:
- 建议使用
“rb”
操作模式读取数据,因为其可以读取所有类型数据,若要显示字符串数据,则需要对读取到的数据进行 解码(将二进制转成字符串) 格式如下:读取到的二进制数据.decode("utf-8")
- 在打开文件到关闭文件之间进行多个读取操作时, 其光标仅在第一次读取操作时从头开始,之后的读取操作光标的开始位置就是上个读取操作的光标结束位置
files = open("2.txt", "r", encoding="utf-8")
print(files.read(7))
print("-"*50)
print(files.readline())
print("-"*50)
print(files.readlines())
files.close()
执行结果为:|'abcd\n e'
|--------------------------------------------------
|'fg\n'
|--------------------------------------------------
|['hijk\n', ' lmn\n', ' opq\n', ' rst\n', ' uvw\n', ' xyz哈']
files = open("2.txt", "rb")
print(files.read(7).decode("utf8"), end="")
print("-"*50)
print(files.readline().decode("utf8"), end="")
print("-"*50)
print(files.readlines())
files.close()
执行结果为:|abcd
| --------------------------------------------------
|efg
|---------