python读取dat文件写入表格_Python练习【6】【数据库操作 | 文件读写】

1. 面向对象,文件操作与数据库操作复习题目:

文件score.dat中保存的是100名学生的姓名和Python课、高数和英语成绩。

(1)定义学生类,其中包含姓名、Python课、高数和英语成绩及总分、均分数据成员,成员函数根据需要确定。

(2)读入这名学生的成绩,用对象列表进行存储。

(3)求出各科和总分的最高分。

(4)请按总分的降序(高成绩在前,低成绩在后)排序

(5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中。

(6) 将文件中的所有学生信息, 保存在mariadb数据库中;

import pymysql

import random

import os

if not os.path.exists('./score.dat'):

with open('./score.dat','w+') as file:

for i in range(100):

file.write('St'+str(i)+','+','.join([str(random.randint(20,100))for j in range(3)])+'\n')

# (1)定义学生类,其中包含姓名、Python课、高数和英语成绩及总分、均分数据成员,成员函数根据需要确定。

class Student(object):

def __init__(self,name,py_score,ma_score,en_score):

self.name=name

self.py_score = py_score

self.ma_score = ma_score

self.en_score = en_score

@property

def sum_score(self):

return self.py_score+self.ma_score+self.en_score

@property

def even(self):

return self.sum_score/3

# (2)读入这名学生的成绩,用对象列表进行存储。

st1=Student('tom',13,23,24)

with open('./score.dat','r') as file:

score_data=file.readlines()

score_li=[]

for i in score_data:

oneData=i.rstrip('\n').split(',')

score_li.append(Student(oneData[0],int(oneData[1]),int(oneData[2]),int(oneData[3])))

# (3)求出各科和总分的最高分。

py_max=max([i.py_score for i in score_li])

ma_max=max([i.py_score for i in score_li])

en_max=max([i.py_score for i in score_li])

sum_max=max([i.sum_score for i in score_li])

#(4)请按总分的降序(高成绩在前,低成绩在后)排序

score_li=sorted(score_li,key=lambda x:-x.sum_score)

# (5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中。

print("""

python课程最高分:{0}

高等数学课程最高分:{1}

英语课程最高分:{2}

总分最高分:{3}

""".format(py_max, ma_max, en_max, sum_max))

with open('./odered_score.dat','w+') as file:

for i in score_li:

file.write('%s,%s,%s,%s,%s\n'%(i.name,i.py_score,i.ma_score,i.en_score,i.sum_score))

file.seek(0,0)

# (6) 将文件中的所有学生信息, 保存在mariadb数据库中;

## 连接数据库

con = pymysql.connect(

host='localhost',

user='root',

passwd='redhat',

autocommit=True,

charset ='utf8'

)

cur = con.cursor() # 创建游标

cur.execute('create database if not exists St_scores') # 创建数据库

con.select_db('St_scores') # 选择对应数据库

cur.execute('create table if not exists scores_data(姓名 varchar(20),python float,高等数学 float,英语 float,总分 float)default charset=utf8') # 创建表

# 读取文件中的数据并写入数据表

with open('./odered_score.dat') as file:

line_data=file.readlines()

for onedata in line_data:

data=onedata.rstrip('\n').split(',')

data=[data[0]]+[float(i) for i in data[1:]]

cur.execute('insert into scores_data values("%s",%f,%f,%f,%f)'%(data[0],data[1],data[2],data[3],data[4]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值