计算机的存储系统分为 运行内存 和 硬盘 两种 运存:用来保存程序运行中产生的数据,程序结束会自动销毁 硬盘:硬盘是用来保存文件的,保存在文件中的数据就是保存在硬盘中的。除非手动删除,否则会一直存在
数据持久化就是将数据以各种形式保存在硬盘中(保存到本地文件中)
文件操作基本步骤:打开文件 -> 操作文件(读、写) -> 关闭文件
1)打开文件 open(file,mode='r',encoding=None) - 以指定模式打开指定文件返回一个文件对象 说明: a.file - 文件路径,字符串类型 绝对路径:文件的全路径(一般不写绝对路径) 相对路径:只写文件绝对路劲的一部分,另外一部分用特殊符号代替 特殊符号:./ - 表示当前目录,可以省略 ../ - 当前目录的上层目录 b.mode - 打开方式,字符串类型 第一组:控制操作类型 r - 以只读的形式打开(默认的) w - 以只写的形式打开;打开之前先清空原文件 a - 以只写的形式打开;不会清空 第二组:控制数据类型(文本数据-str/二进制数据-bytes) t - 操作的数据是文本数据(默认) b - 操作的数据是二进制数据 注意:每一组只能选一个,两组值进行组合使用 c.encoding - 文本编码方式;直接写'utf-8' 注意:如果打开方式中带b,不能设置encoding 总结:文本文件可以用文本方式打开,也可以用二进制方式打开,二进制文件只能用二进制方式打开(图片、音视频)a.数据保存在文件中 b.需要数据的时候从文件中读数据 c.当数据发生改变时,对保存数据的文件进行更新
统计运行次数 # 先创建一个文件保存次数0 with open('./text.txt',encoding='utf-8') as f: count = int(f.read()) count += 1 print(count) with open('./text.txt', 'w', encoding='utf-8') as f: f.write(str(count)) 添加学生姓名 # 先创建一个空文件 with open('./student.txt', 'a', encoding='utf-8') as f: x = input('name:') f.write('name:' + str(x) + '\r')字典和列表的写操作:将容器格式的字符串转换成对应容器型数据类型(eval)
以列表形式保存学生数据,每个学生的数据是一个字典 # 先创建一个文件保存一个空列表 def add_student(): name = input('姓名') age = input('年龄') tel = input('电话') stu = {'姓名:', name, '年龄:', age, '电话', tel} with open('./student.txt', 'r', encoding='utf-8') as f: new_student = eval(f.read()) new_student.append(stu) with open('./student.txt', 'w', encoding='utf-8') as f: f.write(str(new_student)) add_student()