python文件操作题

一、读取文件数据

•将数据素材文件stud.csv保存到电脑C:\py文件夹下;

•设计程序读取stud.csv文件内容,循环逐行处理每个学生的

数据,提取每个学生的学号、姓名、出生日期、性别组成

一个列表;

•如:[‘19080174031’,’黄晓瑞’,’19981225’,’女’]

---此处添加IOError异常处理模块,若打开文件错误,则提示

“文件打开错误,请核对文件是否存在”,程序结束(结束

程序的方法早前的身份证练习中有讲到)

二、添加生肖数据项

在上一步提取的出生日期信息的基础上,推算出该同学的生

肖,添加到上一步的列表中。

如:[‘19080174031’,’黄晓瑞’,’19981225’,’女’,’虎’]

推算生肖的方法,其实就是用出生日期的年份整数与某个鼠年的

年份整数相减,然后减法的差与12取余的余数就是生肖的顺序了,

0—鼠1—牛……………………11---猪

三、当前学生信息添加到主列表

当前学生信息列表生成完毕,将该列表作为一个子列表加入

主列表,形如:

[[‘19080174031’,’黄晓瑞’,’19981225’,’女’,’虎’],

………………,

[另外一个学生的信息]]

四、主列表排序及添加表头

全部学生信息添加到主列表生成完毕,按照出生日期对主列

表逆序排序;

在主列表最前面添加两个子列表,分别是表头和学生本人的

信息,例如:

[[‘学号’,’姓名’,’出生日期’,’性别’,’生肖’],

[‘2009014031’,’王大蟒’,’20021225’,’女’,’蛇’],

[‘19080174031’,’黄晓瑞’,’19981225’,’女’,’虎’],

………………,

[另外一个学生的信息]]

五、结果写入文件

将学生信息主列表生成写入CSV文件:

“c:\\py\\fname.txt”

其中的fname为学生本人的学号。

---此处添加IOError异常处理模块,若打开文件错误,则提示

“文件打开错误,请核对文件是否存在”,然后使用print函

数输出所有学生的信息,每人一行。

主要涉及文件存取和字符串、字典、列表处理等,参考如下代码:

try:
    f=open('stud.csv','r',encoding='utf-8')
except IOError:
    print("文件打开错误,请核对文件是否存在")
shu_dic = {0:'鼠',1:'牛',2:'虎',3:'兔',4:'龙',5:'蛇',6:'马',7:'羊',8:'猴',9:'鸡',10:'狗',11:'猪'}
d=f.read().split('\n')
sts=[]
for row in d[1:]:
    id=row.split(',')[0]
    name = row.split(',')[1]
    bdate = row.split(',')[2][6:14]
    sex = '女' if int(row.split(',')[2][16]) % 2 == 0 else '男'
    shu = shu_dic[(int(bdate[:4])-1984) % 12]
    stu = [id, name, bdate, sex,shu]
    sts.append(stu)
f.close()
new=sorted(sts, key=lambda x: x[2], reverse=True)
new.insert(0,['学号', '姓名', '出生日期', '性别', '生肖'])
try:
    f1=open('fname.txt','w',encoding='utf-8')#fname为自己的学号
except IOError:
    print("文件打开错误,请核对文件是否存在")
for line in new:
    st=','.join(line)
    f1.writelines(st)
    f1.write('\n')
    print(st)
f1.close()

如你对解答满意,请点击一下采纳。

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632