实验题目:文件读取
将StudentInfo中的信息以字典的形式存储在列表里。
文件内容:
学号|姓名|平时成绩|期末成绩
1445204009|王召|100|90
1445204010|林锦|95|67
1445204011|张晓|80|90
1445204012|赵雨|90|79
第一步:打开文件
with open("studentInfo.txt", 'r', encoding='utf8') as f:
1.encoding='utf8'防止读取的为乱码
2.使用with的话就不用close()了
第二步:读取第一行,以‘|’分割并去掉‘\n’,转化为列表作为字典的key
head = f.readline().strip().split('|')
1.strip()去除'\n'
2.split('|')以‘|’分割
第三步:读取一行,以‘|’分割并去掉‘\n’,转化为列表
for line in f:
line = line.strip().split('|') # 读取一行,以‘|’分割并去
第四步:为字典的key赋值对应的value
for i in range(len(head)):
f_dict = {}
f_dict[head[i]] = line[i]
第五步:将字典添加进列表
f_list = []
f_list.append(f_dict)
第六步:输出
print(f_list)
代码整合:
with open("studentInfo.txt", 'r', encoding='utf8') as f:
head = f.readline().strip().split('|') # 读取第一行,以‘|’分割并去掉‘\n’,转化为列表作为字典的key
f_list = []
for line in f:
line = line.strip().split('|') # 读取一行,以‘|’分割并去掉‘\n’,转化为列表
f_dict = {}
for i in range(len(head)):
f_dict[head[i]] = line[i] # 为字典的key赋值对应的value
f_list.append(f_dict) # 将字典添加进列表
print(f_list)
结果:
实验题目:字典格式读取文件
现有一个user.csv文件,内容如下:
name,username,email
杨洋,yangy,yangy@sina.com
贾子豪,jiazh,jiazh@126.com
于飞,yuf,yuf@163.com
田宇辰,tianych,tianych@sina.com
1)以字典格式读取csv文件并打印出每个人的名字和电子邮件地址
2)新建usercopy.csv文件,将user.csv文件的内容按照csv文件写入的方式写入进usercopy.csv中。
import csv
with open('user.csv', 'r', encoding='utf8') as f: # 读
dictReader = csv.DictReader(f)
header = dictReader.fieldnames
ls = []
for row in dictReader:
ls.append(list(row.values()))
print(ls)
with open('usercopy.csv', 'w', encoding='utf8') as file: # 写
write = csv.writer(file)
write.writerows(ls)
自定义一个异常类:
下面定义了一个CandleShop类:
class CandleShop:
name = "Here's a Hot Tip: Buy Drip Candles"
def __init__(self, stock):
self.stock = stock
def buy(self, color):
self.stock[color] = self.stock[color] - 1
candle_shop = CandleShop({'blue': 6, 'red': 2, 'green': 0})
candle_shop.buy('blue')
1)自定义一个异常类OutOfStack
2)请修改实例buy当购买蜡烛的量超出库存时会抛出OutOfStack异常
3)想办法在主程序中加一个代码会引起程序抛出OutOfStack
4)捕获该异常,并输出异常的具体信息。
class CandleShop:
name = "Here's a Hot Tip: Buy Drip Candles"
def __init__(self, stock):
self.stock = stock
def buy(self, color):
self.stock[color] = self.stock[color] - 1
class OutOfStack(Exception): # (1)自定义一个异常类OutOfStack
pass
def new_buy(self, color): # (2)动态修改实例buy当购买蜡烛的量超出库存时会抛出OutOfStack异常
if self.stock[color] > 0:
self.stock[color] = self.stock[color] - 1
else:
raise OutOfStack("购买蜡烛的量超出库存!") # 产生异常
try:
candle_shop = CandleShop({'blue': 6, 'red': 2, 'green': 0})
CandleShop.buy = new_buy
candle_shop.buy('blue')
candle_shop.buy('green') # (3)加一个代码会引起程序抛出OutOfStack
except OutOfStack as e: # (4)捕获该异常
print(e) # 输出异常的具体信息
else:
print("蜡烛还有库存!")