学员信息管理系统2.0
首先,我们在这里来介绍一下python的文件操作
- 文件的基本操作(打卡,读写,关闭)
文件操作
首先我们需要了解一下几个模式:(非常重要)
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
1.打开文件
在python中,使用open函数可以打开一个已经存在的文件,或者创建一个新文件,使用方法如下:
open(name,mode)
- name:是要打开目标文件名的字符串
- mode:设置打开文件的模式(读,写,追加等)
2.文件的写入操作
w–写入:案例如下:
# 在这里我们是没有创建文件的
file_name = open("诗歌.txt", 'w',encoding="utf-8")
file_name.write("将敬酒,杯莫停")
file_name.close()
结果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HT59pEpZ-1686656510789)(C:\Users\管勤\Desktop\QQ截图20230612200241.png)]
注意:写入后光标是在文件的前方。
3.文件的追加写入
a – 追加写入:案例如下:
file_name = open("诗歌.txt", 'a',encoding="utf-8")
file_name.write("与君歌一曲")
file_name.close()
会在后面紧接着写入”与君歌一曲”
注意:追加写入后光标也是在文件的开头。
4.文件的读取操作
- read(num)
num表示要从文件中读取的数据长度,默认是全部读写
# 在这里我们是没有创建文件的
file_name = open("诗歌.txt", 'r',encoding="utf-8")
# 读取信息
content = file_name.read()
# 将信息打印到控制台
print(content)
file_name.close()
-
readlines()和readline()
readline:是一行一行的读,每次就读取一行。
readlines:是一次性将所有的数据都读过来,而且返回的是一个列表,其中每一行的数据为一个元素。
在掌握以上知识后,我们就可以开始进行以文本文件存储的方式来写一个学员信息管理系统啦
学员信息管理系统的流程图如下:
我们具体来实现的功能有增,删,改,查。此外,我们使用文本文件存储的方式来存储学员信息,流程图如下:
代码如下:
class Student_manger(object):
def __init__(self):
self.student_list = {}
def add_student_info(self):
self.student_list["学号"] = input("请输入学生学号:")
self.student_list["姓名"] = input("请输入学生姓名:")
self.student_list["年龄"] = input("请输入学生年龄:")
self.student_list["性别"] = input("请输入学生性别:")
self.student_list["爱好"] = input("请输入学生爱好:")
with open("./学员信息.txt", 'a', encoding="utf-8") as file:
file.write(str(self.student_list))
file.write("\n")
print("学员信息添加成功!")
def del_student_info(self):
with open("./学员信息.txt", "r", encoding="utf-8") as f:
student_list = f.readlines()
student_ID = input("请输入您需要删除的学员的ID:")
for data in student_list:
if student_ID == eval(data)["学号"]:
student_list.remove(data)
with open("./学员信息.txt", "w", encoding="utf-8") as file_path:
file_path.write("".join(student_list))
print("删除学员信息成功!")
def find_student_info(self):
# 定义一个变量来设置该学员是否在系统中
flag = 1
with open("./学员信息.txt", "r", encoding="utf-8") as f:
student_list = f.readlines()
student_ID = input("请输入您需要查找的学员的ID:")
for data in student_list:
if student_ID == eval(data)["学号"]:
flag = 1
i = eval(data)
for value in i.values():
print(value, end="\t")
print("\n")
else:
flag = 0
if flag == 0:
print("查找的学员信息不在该系统中,请重新输入!")
else:
print("学员信息查找成功!")
def modif_student_info(self):
with open("./学员信息.txt", "r", encoding="utf-8") as file:
student_list = file.readlines()
new_student_list = []
student_ID = input("请输入您需要修改的学员ID:")
for data in student_list:
if student_ID == eval(data)["学号"]:
new_dict = {}
new_dict["学号"] = input("请输入新的学生学号:")
new_dict["姓名"] = input("请输入新的学生姓名:")
new_dict["年龄"] = input("请输入新的学生年龄:")
new_dict["性别"] = input("请输入新的学生性别:")
new_dict["爱好"] = input("请输入新的学生爱好:")
new_student_list.append(str(new_dict) + "\n")
if student_ID != eval(data)["学号"]:
new_student_list.append(str(data))
# new_student_list.append(data)
# print(new_student_list)
with open("./学员信息.txt", "w", encoding="utf-8") as f:
f.write("".join(new_student_list))
print("学员信息修改成功!")
def run(self):
while True:
print("========学员信息管理系统========")
print("********|1.添加学员信息|********")
print("********|2.删除学员信息|********")
print("********|3.查找学员信息|********")
print("********|4.修改学员信息|********")
print("********|5.退出管理系统|********")
f = int(input("请输入您的选择: "))
if f == 1:
self.add_student_info()
elif f == 2:
self.del_student_info()
elif f == 3:
self.find_student_info()
elif f == 4:
self.modif_student_info()
else:
print("欢迎下次继续使用!")
break
if __name__ == '__main__':
resp = Student_manger()
resp.run()
以上就是一个简单学员信息管理系统,不足之处,欢迎大家指正!!