实验9:文件与异常
1.实验目标及要求
(1)了解文件的分类。
(2)掌握文件的打开模式。
(3)掌握文本文件的读/写方法。
(4)掌握csv文件的读/写方法。
(5)理解异常的概念。
(6)熟悉异常处理的步骤。
(7)掌握文件操作异常处理的方法。
2. 实验主要内容
(1)文件徐公美.txt的内容为“邹忌修八尺有余,而形貌昳丽。朝服衣冠,窥镜,谓其妻曰:“我孰与城北徐公美?”其妻曰:“君美甚,徐公何能及君也?”城北徐公,齐国之美丽者也。忌不自信,而复问其妾曰:“吾孰与徐公美?”妾曰:“徐公何能及君也?”旦日,客从外来,与坐谈,问之客曰:“吾与徐公孰美?”客曰:“忌你太美”。编写程序将该文件中的“徐公”替换为“徐坤”。
代码部分:
with open("徐公美.txt","r+",encoding="UTF-8") as file:
for line in file:
if "徐公" in line:
line=line.replace('徐公','徐坤',10)
print(line)
file.write(line)
输入:
输出:
邹忌修八尺有余,而形貌昳丽。朝服衣冠,窥镜,谓其妻曰:“我孰与城北徐坤美?”其妻曰:“君美甚,徐坤何能及君也?”城北徐坤,齐国之美丽者也。忌不自信,而复问其妾曰:“吾孰与徐坤美?”妾曰:“徐坤何能及君也?”旦日,客从外来,与坐谈,问之客曰:“吾与徐坤孰美?”客曰:“忌你太美”。
(2)文件score.txt保存了学生的平时成绩和期末成绩,内容如下:
学号,平时成绩,期末成绩
9999180101,77,88
9999180102,91,85
9999180103,87,96
9999180104,70,68
9999180105,86,72
编写程序读取所有成绩,计算总评成绩(四舍五入到整数),其中总评成绩=平时成绩40%+期末成绩60%。最后按总评成绩降序排列后保存至一个新的文件内。
代码部分:
import csv
def read_file():
result=[]
with open(r'score.txt', 'r', encoding='utf-8') as f:
for line in f:
line = line[:-1]
result.append(line.split(','))
for line in result:
# 四舍五入
x=round(int(line[1])*0.4+int(line[2])*0.6,0)
line.append(x)
return result
def sort_file(file):
return sorted(file, key=lambda x: int(x[3]), reverse=True)
score=sort_file(read_file())
# 写入到csv文件中
f=open(r'score.csv','w',encoding='utf-8')
csvwrite=csv.writer(f)
for lis in score:
csvwrite.writerow(lis)
输入:
输出:
(3)文件data.txt中存放了整数:“34,12,78,56”,各整数之间使用英文逗号分隔,编写程序读取该文件中的所有整数,将其升序排列后保存至一个新的文件内。
代码部分:
import csv
def print_data():
with open("data.txt","r+",encoding="UTF-8") as file:
for line in file:
lin=line.split(',')
# 输出四个整数
for l in lin:
print(l,end=' ')
print()
return lin
# 升序排列
data=print_data()
data.sort()
f=open(r'data.csv','w',encoding='utf-8')
csvwrite=csv.writer(f)
csvwrite.writerow(data)
输入:
输出:
3.心得体会
对于文件操作来说,我感觉是不太好理解的,对于今天做的实验来说,我卡壳时间还是很长的,因为疫情还没返校,没能听老师讲课,自己学习了一部分终究还是抵不过课堂上教的。所以做起来还是很吃力的,还是要把这部分内容再研究研究,熟悉一下文件操作的内容。感觉有好几点都没怎么想明白:第一题使用到的字符串替换这一点还真给忘记了,然后既要打开文件,又要将修改的内容写入到该文件中,要将权限改成可读可写模式,r+,w+。第二个没想明白怎么求出综合成绩后直接把文件内容进行排序。所以文件操作这方面还得继续学习一下了。
7万+

被折叠的 条评论
为什么被折叠?



