前提(待优化):收到的文件均以学生姓名+学号来命名好了的,文件名格式统一,文件名除了学号外不存在别的数字。(推荐使用乐云进行文件收取)
实现的功能:
1.读入一个以"学号+姓名"为格式每行记录一个学生的数据的student_list.txt,统计每个学生的上交情况
2.文件大小异常统计,如果有文件小于2kb的,则判定为文件大小异常,需要进行进一步的确认
# 读入文件夹有谁交了的学号
import os
path ='./模式识别非线性判别-作业1/'
files= os.listdir(path)
name = []
ab_size = []
for i in range(0,len(files)):
# 添加了判断文件大小异常的功能,如果文件大小小于2kb,则判断为大小异常
size = os.path.getsize(path+files[i])
if size/float(1024)<2:
ab_size.append(files[i]+" "+str(size/float(1024))+'kb')
name.append( ''.join(filter(str.isdigit, files[i])))
sub_number = list(filter(None, name))
# submitted为已交作业人数
submitted = len(sub_number)
print("已交作业人数:",submitted)
print("未交人数:",(51-submitted))
print("提交率:{:.2%}".format(submitted/51))
# 列出没有交作业的名单
student_list =[]
for line in open('student_list.txt','r',encoding='utf-8'):
if ''.join(filter(str.isdigit, line[:-1])) in sub_number:
continue
else:
student_list.append(line[:-1])
print("未交作业名单:\n",student_list)
print("异常大小的文件:\n",ab_size)