马上就要放暑假了,老师们不要过得太爽。同时也到了非中高考科目老师对学生期末考核时间。
某君是初中一年级的信息技术老师,他的电脑D盘下有个“初一”文件夹,里面除了每个以班级命名的学生名册表(如701.xlsx,702.xlsx)外,还有个“平时作业”文件夹,里面又有各个以班级命名的文件夹(如701,702等),平时上课学生提交的包含学生姓名的电子作业就放在里面。
对学生的考核,平时作业上交情况是非常重要的一个内容,某君准备按学生上交作业次数来考核学生的平时成绩,毕竟多交作业,说明学生的学习态度不错,再结合最后的考察作业完成情况,基本能反映学生的学习情况。
可面对十个班每班50多个学生,每生作业最多十多次的情况,统计工作无疑是巨大的。
手工统计是难,可是电脑统计就简单了。某君用python编了几行代码,十多分钟就轻松搞定。难怪小平同志说:科学技术也是生产力。
import os
import openpyxl
# 选择班级及文件夹
list_class = ['701','702','703','704','705','706','707','708','709','710'] # 班级名称列表,学生名册文件名、班级作业文件夹都以此命名
for i in range(6):
name_class = list_class[i] # 选择班级
name_file = name_class +'.xlsx' # 选择班级学生名册电子表格
path = 'D:/初一/平时作业/' + name_class # 选择班级文件夹(路径)
print(name_file, path)
# 统计学生上交作业次数,即班级作业文件夹中包含学生姓名的文件个数
wb = openpyxl.load_workbook(name_file,data_only=True) #打开学生名册文件,如有公式只读数据
sheet = wb.active
for x in range(2, sheet.max_row+1): # 学生名单在二列,从第二行开始,第一列是学号,第一行是标题
# 生成B2,B3等单元格
name_cell = sheet.cell(row=x, column=2)
name_stu = name_cell.value # 提取单元格学生姓名
print(name_cell, '单元格中的姓名是', name_stu)
# with open('作业名单.txt') as file:
for root, dirs, files in os.walk(path):
# print(files)
n = 0 # 学生作业次数(以作业文件名中包含学生姓名为准)
for file in files:
# print(file)
if name_stu in file: # 作业文件名中包含学生姓名
print(file, '中有', name_stu)
n += 1
# 在学生姓名后两列写入作业次数
sheet.cell(row=x, column=4).value = str(n)
else:
pass
print('正在向', sheet.cell(row=x, column=4), '中写入作业次数', n)
wb.save(name_file) # 保存修改后的学生名册文件
print("作业次数写入成功。")