python 实验九 文件与异常

本文通过一系列实例,详细介绍了Python中如何进行文件的读写操作,包括一次性读取和逐行读取文件内容,计算平均分,处理购物清单,读写CSV文件,统计文本行数与单词个数,替换文本内容,追加文件,添加行号,统计词频,处理逗号分隔的整数列表,以及合并网站名称和网址等操作,同时涵盖了异常处理的实践应用。
摘要由CSDN通过智能技术生成

1.新建一个文本文件yzy.txt,文件内容如下
慈母手中线,游子身上衣。
临行密密缝,意恐迟迟归。
谁言寸草心,报得三春晖。
编写程序输出该文件的内容,要求使用一次性读入整个文件内容和逐行读取文件内容的两种方式。

file = open('yzy.txt', 'r', encoding='utf-8')
print(file.read())
file.close()

file = open('yzy.txt', 'r', encoding='utf-8')
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())
file.close()

输出结果:

慈母手中线,游子身上衣。
临行密密缝,意恐迟迟归。
谁言寸草心,报得三春晖。
慈母手中线,游子身上衣。

临行密密缝,意恐迟迟归。

谁言寸草心,报得三春晖。

2.计算运动会某个参赛者选手得分。假设共有10个裁判,每个裁判给该选手打分(分值0~10之间)后,去掉一个最高分和一个最低分之后的平均分极为该运动员的最后得分。某位选手的得分数据保存在文件中,文件内容如下:
9.37  9.52  9.98   10  9.85  9.73  9.93   9.76  9.81  9.08
各数据之间使用一个空格分隔。请编写程序从文件中读取该选手的成绩并计算最后得分。

file = open('9-2.txt', 'r', encoding='utf-8')
content = file.read()
file.close()

scores = [float(n) for n in content.split()]
print(scores)

maxScore = max(scores)
minScore = min(scores)
scores.remove(maxScore)
scores.remove(minScore)
print(scores)
print(sum(scores) / len(scores))

输出结果:

[9.37, 9.52, 9.98, 10.0, 9.85, 9.73, 9.93, 9.76, 9.81, 9.08]
[9.37, 9.52, 9.98, 9.85, 9.73, 9.93, 9.76, 9.81]
9.74375

3.文件a.txt中每一行内容分别为购买的商品名称,价格,数量,求出所购商品花费的总费用。
apple 10 3
focus 100000 1
surface 8000 2
thinkpad 7000 3
chicken 10 3

cost = []
with open('a.txt', 'r') as file:
    for row in file.readlines():
        ls = row.split(' ')
        cost.append(int(ls[1]) * int(ls[2]))
print(sum(cost))

输出结果:

137060

4.新建一个文本文件score.csv,用来保存10名考生3门课程成绩,内容如下:
考号,程序设计,细胞生物,生理学
10153450101,72,96,88
10153450102,68,88,73
10153450103,63,63,66
10153450104,95,64,65
10153450105,89,88,57
10153450106,77,87,77
10153450107,67,64,97
10153450108,44,99,64
10153450109,82,73,75
10153450110,79,78,85
以上各数据均使用英文逗号分隔。请编写程序读取文件内容,统计每门课程的平均成绩,最高分和最低分。

# 统计score.CSV文件中每门课程的平均成绩、最高分和最低分。

# 方法一
with open('score.csv', "r", encoding='utf-8') as file:
    LS = list(file)
    del LS[0]  # 去掉标题行

ls1, ls2, ls3 = [], [], []
for s in LS:
    x = s[:-1].split(',')  # 因为最后一个字符是回车符\n,s[:-1]相当于去掉了最后的回车符
    ls1.append(int(x[1]))
    ls2.append(int(x[2]))
    ls3.append(int(x[
  • 203
    点赞
  • 670
    收藏
    觉得还不错? 一键收藏
  • 43
    评论
好的,Python实验主要包括文件操作和异常处理两个部分。下面我将分别介绍这两个部分的内容。 ### 文件操作 在Python中,可以通过open()函数打开一个文件,然后进行读写操作。open()函数的基本语法如下: ```python file_object = open(file_name [, access_mode][, buffering]) ``` 其中,file_name为文件名,access_mode为打开文件的模式,buffering为缓冲区大小。access_mode有以下几种模式: - "r":只读模式,打开文件后只能读取文件内容,不能修改文件内容。 - "w":只写模式,打开文件后只能写入文件内容,如果文件不存在则会创建文件,如果文件已存在则会清空文件内容。 - "a":追加模式,打开文件后只能写入文件内容,如果文件不存在则会创建文件。 - "r+":读写模式,打开文件后既可以读取文件内容也可以修改文件内容。 - "w+":读写模式,打开文件后既可以读取文件内容也可以修改文件内容,如果文件不存在则会创建文件,如果文件已存在则会清空文件内容。 - "a+":追加模式,打开文件后既可以读取文件内容也可以写入文件内容,如果文件不存在则会创建文件。 例如,我们可以使用以下代码打开一个文件并将文件内容输出到控制台: ```python file_object = open("example.txt", "r") print(file_object.read()) file_object.close() ``` 在使用完文件后,要记得使用close()函数关闭文件对象。 同时,Python还提供了一些文件对象的常用方法,例如: - file_object.read([size]):从文件中读取指定字节数的数据。 - file_object.readline():读取文件中的一行数据。 - file_object.readlines():读取文件中所有行的数据,并返回一个列表。 - file_object.write(str):将指定的字符串写入文件中。 - file_object.writelines(list):将指定的字符串列表写入文件中。 - file_object.seek(offset[, whence]):用于移动文件读取指针到指定位置。 ### 异常处理 在程序运行过程中,有可能会出现各种错误,例如文件不存在、数据类型不匹配等。为了使程序更加稳定和健壮,Python提供了异常处理机制。 异常处理的基本语法如下: ```python try: # 可能会出现异常的代码块 except Exception1: # 处理Exception1类型的异常 except Exception2: # 处理Exception2类型的异常 else: # 如果没有发生异常,则执行else代码块 finally: # 无论是否发生异常,都会执行finally代码块 ``` 其中,try代码块中包含可能会出现异常的代码,如果出现异常则会跳转到相应的except代码块中进行处理。如果没有出现异常,则会执行else代码块中的代码。无论是否出现异常,finally代码块中的代码都会被执行。 例如,我们可以使用以下代码进行异常处理: ```python try: num = int(input("请输入一个整数:")) result = 10 / num print(result) except ValueError: print("输入的不是整数!") except ZeroDivisionError: print("除数不能为0!") else: print("执行完毕!") finally: print("结束程序!") ``` 在上述代码中,如果输入的不是整数,则会跳转到ValueError类型的异常处理代码块中进行处理,如果除数为0,则会跳转到ZeroDivisionError类型的异常处理代码块中进行处理。如果没有出现异常,则会执行else代码块中的代码,并最终执行finally代码块中的代码。 以上就是Python实验文件异常内容,希望能对你有所帮助。
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值