m0_58318154 2021-05-30 22:44 采纳率: 75%
浏览 76
已采纳

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函

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

  • 写回答

2条回答 默认 最新

  • CSDN专家-HGJ 2021-05-31 01:50
    关注

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

    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()

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?