一份文件中保存的是各位同学的各科成绩,编写程序计算出各位同学的总成绩写入文件中每行末尾
思考方向:
1、先把原文件按照格式(字符串或是列表)内容写入文件,文件位置可直接保存在相对路径下;
2、打开原文件内容并统计各学生的总成绩保存;
3、打开源文件,并以覆盖形式重新写入内容;
4、打开文件,读取全部内容到内存,验证;
考查点:
#coding:utf8
# 第一步 将原始数据写入文件
file = open('abc.txt','w',encoding='utf8')
string='a1\t70\t80\t90\t\n' \
'a2\t80\t85\t95\t\n' \
'a3\t90\t70\t80\t\n'
file.write(string) # 写入文件,字符串用write()
file.close()
# 第二步 从原始文件中读取数据并计算每个学生的成绩总和,最后将每个学生的信息以单位字符串转成列表保存
file1 = open('abc.txt',encoding='utf8') # 打开文件,默认选项缺省,即为读模式
file1_str = file1.readlines() # 将文件内容读取到列表中,以每一个学生为一个单位,一个单位是以字符串。
# print(file1_str)
file_list_new = [] # 新建一个列表
for stu in file1_str: # 遍历学生列表信息
# print(stu)
stu_grade = stu.split() # 将每个单位学生信息转换成列表
# print(stu_grade)
x = int(stu_grade[1]) # 分别定义变量接受stu_grade[]中的成绩,注意下标是从0开始计算,这里成绩在第二个,下表是1
y = int(stu_grade[2])
z = int(stu_grade[3])
sum_grade = x+y+z # 计算总成绩
# print(sum_grade)
stu_grade.append(str(sum_grade)) # 将总成绩转成字符串并追加到列表stu_grade[]中
# print(stu_grade)
stu_grade_str = '\t'.join(stu_grade)+'\n' # 将列表转换成字符串格式
# print(stu_grade_str)
file_list_new.append(stu_grade_str) # 将字符串依次追加到定义的空列表中
# print(file_list_new)
file1.close() # 关闭资源
# 第三步 读取源文件,以覆盖的方式将第二步保存的列表形式内容写进文件
file2 = open('abc.txt','w',encoding='utf8') # 打开文件,以写的方式将原来的文件覆盖,因为追加是追加在最后面,与此处不符合。
file2.writelines(file_list_new) # 将上面的列表逐行写入文件,注意,列表写入用 writelines()
file2.close()
# 第四步 验证答案
file3 = open('abc.txt',encoding='utf8')
file3_string=file3.read() # 读取文件全部内容
print(file3_string)
file3.close()
验证结果: