file文件
1.数据本地化和数据持久化
将数据以文件的形式存到计算机硬盘中(程序中保存的数据,当程序运行结束后会自动销毁)
2.怎么做数据持久化(怎么将程序中的数据和本地文件中的数据关联)
文件读写操作 - 读(获取文件中的内容),写(将数据添加到文件中)
a.文件操作的基本流程:打开文件 -> 文件操作(读/写) -> 关闭文件
3.打开文件
open(file,model='r',encoding=None) --> 以指定的模式打开指定的文件,并且返回被打开的文件对象
说明:
file - 字符串,需要打开的文件路径。()
(了解)绝对路径:文件在电脑上的全路径
相对路径:相对当前代码文件对应的目录来确定的路径
'致橡树.txt' ----当前目录下的致橡树.txt
'./致橡树.txt'----当前目录下的致橡树.txt ./代表当前目录(可以省略)
../ ---代表当前目录的上层目录
.../ ---代表当前目录的上层目录的上层目录
model - 字符串,文件的打开方式
r -- 以只读的形式打开,文本 (默认是r)
w -- 以写的形式打开(覆盖),文本
rb/br -- 以只读的形式打开,二进制
wb/bw -- 以写的形式打开(覆盖),二进制
a -- 以写的形式打开(追加),文本
+ -- 以读写的方式打开
注意:当以读的方式打开一个不存在的文件,程序会报错。FileNotFindError
但是以写的方式打一个不存在的文件,不会报错,还会自动创建一个新的文件。
encoding - 字符串,文字编码方式。
utf-8:支持所有的语言.内容多。
gbk:只支持英文。内容少
注意:
a. 读和写对应的编码要保持一致
b. 非文本文件,不能设置编码方式 .例如图片,视频,可执行文件等……
c. 给他传值的时候要使用关键字参数
d. 以二进制的形式打开文件,不能设置encoding
4.操作文件
a.读操作
文件对象.read() - 获取指定文件中的内容
5.关闭文件
文件对象.close()
6.文件操作的简写 - 打开文件操作完成后会自动关闭文件 (文件对象就是f)
with open(file,model='r',encoding=None)) as 文件对象:
文件操作代码
1.打开当前目录下的文件:文件名 或者 ./文件名
open('致橡树.txt')
open('./致橡树.txt')
2.打开当前目录下的子目录里面的文件名:子目录/文件名 或者 ./子目录/文件名
open('./files2/asd.txt')
.打开方式
f = open('./files2/asd.txt','r',encoding='utf-8')
3.读操作 ..以’r‘方式打开文件,获取文件对象
f1 = open('致橡树.txt',encoding='utf-8')
print(f1.read())
a.读整个文件的内容
f3 = open('致橡树.txt','rb') #bytes--python二进制对应的数据类型
print(f3.read())
b.读一行内容
f2 = open('致橡树.txt','r',encoding='utf-8')
print(f2)
line1 = f2.readline()
print(line1)
练习:读文件中的内容,一行一行的读,读完为止。
f4 = open('致橡树.txt',encoding='utf-8')
while True:
line = f4.readline()
if not line:
break
print(line)
4.写操作
如果需要对文件进行写操作,那么文件必须以写的方式打开
w --用新的内容覆盖原内容
a --在原文件末尾添加新的内容
f = open('致橡树.txt','w',encoding='utf-8')
f.write('人生若只如初见,何事秋风悲画扇。') #覆盖,原文字没有了
f = open('asd.txt','a',encoding='utf-8')
f.write('人生若只如初见,何事秋风悲画扇。') #写到最后面
#关闭文件
f.close()
程序需要这个数据的时候,就从文件中将这个数据读出来
对数据进行修改后再将最新的数据保存到文件中。
用一个变量来保存当前文件执行的次数,第一次执行py文件的时候打印1
#将数据从文件中读出来
with open('files2/asd.txt',encoding='utf-8') as f:
num = int(f.read())
# 修改数据
num += 1
#将新的数据再写入文件中
with open('files2/asd.txt','w',encoding='utf-8') as f:
f.write(str(num))
#显示数据
print(num)
网友评论