基于Python实现学生作业提交情况统计

絮絮叨叨

老板给了一份学生期末作业的文件,里面有两个文件夹,分别是优秀作业和良好作业,让我把作业情况统计一下。

***,全是这种无脑体力活,打开文件夹一看,心态也是炸,文档交的名字那叫一个烂七八糟。不知道是交了多年作业的不长进,还是收了多年作业的不长进。

牢骚归牢骚,事来了,活要干呢。

干!

import os
import xlrd
import pandas as pd

# 获取文件名
def get_file_names(path):
    L = []
    for root, dirs, files in os.walk(path):
        for file in files:
            L.append(os.path.join(root, file))
    return L


# 获取名单
def excel_deal(you,liang):
    # 打开文件
    data = xlrd.open_workbook('names.xlsx')

    # 查看工作表
    data.sheet_names()
    print("sheets:" + str(data.sheet_names()))

    # 通过文件名获得工作表,获取工作表1
    table = data.sheet_by_name('Sheet1')
    # 获取行数和列数 行数:table.nrows 列数:table.ncols
    print("总行数:" + str(table.nrows))
    print("总列数:" + str(table.ncols))

    out_list = []
    for rowNum in range(table.nrows):
        if rowNum > 0:
            rowVale = table.row_values(rowNum)
            id_str = rowVale[0]
            name_str = rowVale[1]
            value0 = 0
            value1 = 0
            value2 = 0
            #按照学号查找
            if you.find(id_str) > 0:
                value0 = 1
            if liang.find(id_str) > 0:
                value0 = 2
            #按照 姓名查找
            if you.find(name_str) > 0:
                value1 = 1
            if liang.find(name_str) > 0:
                value1 = 2

            #综合
            if value0 == 0 and value1 == 0:
                value2 = 0
            else:
                if value0 > 0 and value1 > 0 and value0 != value1:
                    print('-Error--'+name_str)

                value2 = max(value0, value1)

            value_str = str(value0)+','+str(value1)+','+str(value2)
            # print(value_str)
            out_list.append([rowVale[0],rowVale[1],value0,value1,value2])

    print(out_list)
    name = ['学号', '姓名', '学号比对', '姓名比对', '综合']
    out_data = pd.DataFrame(columns=name, data=out_list)
    print(out_data)
    out_data.to_csv('./result.csv', encoding='gbk')
    out_data.to_excel('./result.xlsx', encoding='gbk')
    #print(str(rowNum)+','+name_str+','+str(value)+'\n')


if __name__ == '__main__':
    you_data = get_file_names('./you/')
    you_str = ''.join(you_data)
    print(len(you_data))
    print(you_str)

    liang_data = get_file_names('./liang/')
    liang_str = ''.join(liang_data)
    print(len(liang_data))
    print(liang_str)

    excel_deal(you_str,liang_str)



再说两句

根据作业命名的多样性,采用学号匹配和名字匹配,和提前拿到的名单一一比对,最后对提交情况做一个合并处理。

 

不唠了,我去催作业了!对于没交作业的漏网之鱼,重点批评。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值