试一试用Python实现作业提交统计

用Python实现作业提交统计
excel文件第一列 学号
excel文件第二列 姓名
学生提交的word作业命名 学号+(班级/姓名),一定要有学号

import os
import xlrd
import time
from xlutils.copy import copy
import re

#(作业文件存放目录)获取目录下所有的文件名
file_name_submitted =os.listdir("C:/Users/29752/OneDrive/Documents/线上课程/离散数学/离散作业/第四次作业/")
s_file_name_submitted = list()          #创建用于存放所有学号的列表
file_name_submitted = " ".join(file_name_submitted)
comp = re.compile("[0-9]{10}")          #创建正侧表达式规则
s_file_name_submitted = comp.findall(file_name_submitted)   #用正则表达式提取学号

read_book = xlrd.open_workbook("C:/Users/29752/OneDrive/Documents/线上课程/离散数学/离散作业/作业提交统计.xlsx")#打开excel文件
write_book = copy(read_book)            #创建excel文件的副本,用于存放输出的结果
read_sheet = read_book.sheets()[0]      #选择第一个sheet表
name_list = read_sheet.col_values(1)    #读取excel文件的姓名列

write_col = 5                   #需要写入数据的excel文件行
all_students_id=list()          #所有学生的学号
not_submitted = 0               #未提交数量
had_submitted = 0               #已提交的数量
for i in range(1,read_sheet.nrows):     #遍历整个excel表,获取所有同学的学号
    temp = read_sheet.cell(i,0).value   #读取第i行,第0列
    temp = str(temp)[:10]               #按照指定格式获取数据
    all_students_id.append(temp)        #将学号放入all_students_id列表中


write_sheet = write_book.get_sheet(0)

for i in range(len(all_students_id)):                   #遍历所有学生的学号
    if all_students_id[i] in s_file_name_submitted:     #如果学号在已提交的文件中
        write_sheet.write(i+1,write_col,1)              #在输出的excel文件中进行标记
        had_submitted +=1
    else:
        print(all_students_id[i],name_list[i+1].strip()) #如果未提交,则输出学生的学号和名字
        not_submitted +=1
print(not_submitted-1,"人未提交")
print(had_submitted,"已提交")
print("\t以下同学未统计在excel中")
for i in s_file_name_submitted:
    if i not in all_students_id:
        print(i)
write_book.save("E:/作业统计out.xls")

输出样例

11802***** XXX
11904***** XX
11801***** XXX
65 人未提交
31 已提交
	以下同学未统计在excel中(显然没有)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值