"""
包含__init__.py文件的文件夹就是包
包用来对py文件(模块)进行分类或者封装
"""
"""
1)import 包名.模块名
包名.模块名.变量
2)import 包名.模块名 as 新名
对'包名.模块名'进行重命名,命名通过'新名.变量'的方式使用变量
3)from 包名 import 模块名1,模块名2,....
模块名.变量
4)from 包名 import 模块名1 as 新模块名1,模块名2 as 新模块名2,....
新模块名.变量
5)from 包名.模块名 import 变量
"""
"""
不管用什么样的方式导入包或者包中的内容的时候,系统都会先去执行__init__.py文件
"""
"""
1)计算机存储数据
程序中的数据默认情况下都是保存在运行内存中,保存在运行内存中的数据在程序结束后会自动销毁。
保存在磁盘中的数据,除非手动删除或者磁盘损坏,数据会一直存在。
2)持久化
将程序中的数据通过文件保存在磁盘中,这个过程就是数据持久化过程
持久化工具:普通文本文件(.txt)、数据库文件(.sqlite、.db)、json文件、plist文件、csv文件、excel文件等
"""
"""
操作文件的基本步骤:打开文件 -> 读/写操作 -> 关闭文件
"""
"""
open(file,mode,...,encoding=None) - 以指定的方式打开指定的文件并且返回(返回的是文件对象)
#
file - 字符串,需要打开的文件路径
路径:
绝对路径 - 文件在计算机中的全路径
相对路径 - 用 . 来代替文件全路径的部分,只写部分路径;
. - 表示当前目录(当前代码文件所在的目录),可以省略
.. - 表示当前目录的上层目录
... - 表示当前目录上层目录的上层目录
mode - 字符串,打开方式(决定打开文件后文件能支持的操作;决定读写数据的类型)
'r' - 表示只读(默认)
'w' - 表示只写,打开的时候会先清空文件
'a' - 表示只写,打开的时候会保留原文件内容
't' - 表示文本数据,对应str类型(默认)
'b' - 表示二进制数据,对应bytes类型
注意:
1)
以读'r'的方式打开不存在的文件的时候会报错,
以写'w'、'a'的方式打开不存在的文件的时候不会报错,并且自动创建该文件
2)
如果是文本文件打开的时候可以是'b'也可以是't';
如果是非文本文件打开的时候只能带'b'
encoding - 设置文本文件编码方式,一般使用'utf-8'
注意:
1)创建文件和打开文件、读和写对应的编码方式要一致
2)打开的时候如果带'b',不能设置encoding
"""
"""
1.读
文件对象.read() - 从读写位置开始读到文件结尾(适用于所有文件)
文件对象.readline() - 从读写位置开始读到一行结尾(只能用于以't'打开的文本文件)
2.写
文件对象.write(数据) - 将指定数据写入文件中(从读写位置开始写)
文件对象.seek(0) - 将读写位置移动到文件开头(读的方式打开读写位置默认在文件开头,写的方式打开读写位置默认在文件结尾)
注意:seek是无法改变写的位置的
"""
f = open('files/data.txt')
result = f.read()
result = 'start!\n'+result
f = open('files/data.txt', 'w')
f.write(result)
f.close()
"""
1)创建一个文件用来保存需要持久化的数据
2)需要这个数据的时候从文件中去获取这个数据
3)如果在程序中对这个数据进行了修改,需要将最新的数据更新到文件中
"""
name = input('请输入学生姓名:')
f = open('files/stu_name.txt')
result = f.read()
all_student = eval(result)
all_student.append(name)
print(all_student)
f = open('files/stu_name.txt', 'w')
f.write(str(all_student))