grade.txt 文件中存储了学生的学号,姓名,Python的成绩,请根据Python成绩填写“是2及格”。如果Python成绩大于等于60,则填写“及格”;否则填写“不及格”。
请将填写“是否及格”后的数据写入文件“passOrNot.txt”中。
with open('grade.txt', 'r') as f:
lines = f.readlines()
with open('passOrNot.txt', 'w') as f:
for line in lines:
parts = line.strip().split(',')
name = parts[1]
score = int(parts[2])
if score >= 60:
pass_or_not = '及格'
else:
pass_or_not = '不及格'
f.write(f'{name},{pass_or_not}\n')
不知道你这个问题是否已经解决, 如果还没有解决的话:使用Python打开文件时,不同的打开模式具有不同的效果
使用r模式打开的话,只是对文件内容进行读取,不会改变其内容
使用w模式打开,则会将原来的内容清空/覆盖
因此,如若要在原本内容的基础上进行修改,则可以先用r模式打开文件并进行读取,然后再用w模式打开该文件,将经过修改的内容写入文件
这里给个实例,比如我需要在原本文件的每一行后面添加一些信息
def write2File(filename, resultSet):
"""
函数说明:
将测试结果写入文件
:param filename:
要写入的文件
:param resultSet:
测试结果集合
"""
with open(filename, "r", encoding="utf-8") as f_read:
content = f_read.readlines()
#print(content)
index = 0
length = len(resultSet)
with open(filename, "w", encoding="utf-8") as f_write:
for i in range(length):
str = ''
temp = content[i].strip('\n')
str = temp + ',' + resultSet[i] + '\n'
index += 1
f_write.write(str)
with open("grade.txt", "r") as f1, open("passOrNot.txt", "w") as f2:
for line in f1: # 遍历原文件每一行
stu_info = line.strip().split() # 将每一行信息分离出来
if int(stu_info[2]) >= 60: # 判断分数是否大于等于60分
f2.write(f"{stu_info[0]} {stu_info[1]} 及格\n") # 写入及格
else:
f2.write(f"{stu_info[0]} {stu_info[1]} 不及格\n") # 写入不及格