python-学生信息管理系统-修改学生信息

目录

文件的几种打开方式

r模式

w模式

a模式

文件打开二进制

以二进制方式读文件

以二进制方式写文件

核心流程文字描述:分别以两种方式打开文件,r模式作用是读取原文件中的信息,w模式用于向原文件中写入修改后的信息。具体流程,先将原文件中的元素复制到student_old中形成一个列表,将列表中的元素逐个导入到字典d中,每次导入一条,并与要修改学生的学号对比,若一样则重新输入学生信息,若不一样者退出本次循环,遍历下一条列表元素。每次循环过后都已w模式覆盖掉文件中的原有数据,导入d中的数据。

难点

文件的几种打开方式

r模式

以只读的方式打开文件,若文件不存在则抛出异常,可使用read()读取全部文件内容,也可以用readlines()函数读取一行数据

通常使用file=open(filename.txt,'r',encoding='UTF-8')打开文件

读取整个文件

file=open(filename,'r',encoding='UTF-8')

content=file.read()

print(content)

file.close()

扩展:readline()和readlines()方法的不同

readline()读取文件中的一行元素,readline是()是按行读取一个文本文件中的内容,并将每一行存储为一个字符串元素,最终返回一个包含所有元素的列表

w模式

w模式是以写方式打开文件,如果文件不存在则创建,如果文件已存在则覆盖掉原先的内容。

通常使用file=open(filename,'w',encoding='UTF-8')方式打开文本文件

在w模式下,可以使用write()方法向文件中写入内容

file=open(filename,'w',encoding='UTF-8')

file.write('hello world')

file.close()

以上三行代码,会创建一个文件,并向其写入内容。

需要注意的是,在w模式下,每次写入都会覆盖原有的内容,因此如果我们想要把一些数据追加到文件末尾,应该使用a模式。

a模式

a模式是以追加方式打开文件,若文件不存在则创建,若文件存在则在末尾追加内容。

通常可使用以下方式打开文件

file=open(filename,'a',encoding='UTF-8')

file.write('hello,world')

file.close() # 养成习惯,随手关闭文件。

文件打开二进制

除了以上的文件打开模式之外,我们还可以使用b模式(binary mode)来以二进制方式读写文件。在b模式下,文件内容以字节为单位进行读写。例如:

以二进制方式读文件

file=open(filename,'rb')

content=file.read()

print(content)

file.close()

以二进制方式写文件

file=open(filename,'wb')

file.write(b‘hello world’)

file.close()

以上代码中,使用rb模式来以二进制方式读取文件的内容,并使用wb模式来以二进制方式向文件中写入内容。需要注意的是,在以二进制方式写入文件时,我们需要将字符串转换为字节数组。这可以通过在字符串前加上b前缀来实现,例如b"Hello, World!"。

关于解释文件读写方式的原地址

第五节 5文件的三种打开模式 - 开源共享 - 博客园 (cnblogs.com)

源码

def modify():
show()
if os.path.exists(filename): # 如果文件存在
with open(filename, 'r', encoding='utf-8') as rfile: # 打开源文件
student_old = rfile.readlines() # 包含所有元素的列表
else:
return
student_id=input('请输入你要修改的学生学号:')
with open(filename,'w',encoding='utf-8') as wfile: # 创建文件
for item in student_old:
d=dict(eval(item))
if d['id']==student_id: #找到了学生
print('找到学生信息,可以修改')
while True:
try:
d['name'] = input('请输入姓名')
d['englist'] = int(input('请输入英语成绩'))
d['python'] = int(input('请输入python成绩'))
d['java'] = int(input('请输入java成绩'))
except:
print('输入有误,请重新输入')
else:
break
wfile.write(str(d)+'\n')
print('修改成功')
else: # 没找到学生
print('没找到学生')
wfile.write(str(d)+'\n')
answer=input('是否继续修改其他学生的信息?y/n\n')
if answer=='y':
modify()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈哈哈去3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值