database_tools_2中添加了生成个人使用记录的功能CalculateDetailedUsages
This commit is contained in:
parent
897c4b1a8b
commit
3691d28faa
|
|
@ -2730,6 +2730,45 @@ def generateIDtoUsageCorrespondence(idlist,validcols,names): #根据idlist(题
|
|||
corr_dict[idlist[i]] = collist
|
||||
return corr_dict
|
||||
|
||||
|
||||
def GetPaperDate(string):
|
||||
return re.findall(r"\((\d{8})\)",string)[0]
|
||||
|
||||
def CalculateDetailedUsages(xiaoxianpid,statsfilepathlist,statsfilename,gradename,threshold,marks,correspondence_dict,validcols,paperdate,exclude = {}):#根据小闲uid,统计数据所在的路径,文件名,年级,阈值,分数列表和题号列数(0-len(validcols))对应字典,以及原excel文件中的有效列位置validcols, 日期date, 生成单个学生的每道题目的正误数据, 如果有正确率大于1的则返回False
|
||||
outputlist = []
|
||||
marks = [int(mark) for mark in marks]
|
||||
for dir in statsfilepathlist:
|
||||
classname, valid = CheckValidity(dir,gradename,threshold)
|
||||
if valid:
|
||||
dfcurrent = pd.read_excel(os.path.join(dir,statsfilename))
|
||||
for row in range(2,len(dfcurrent)-2): #学生的数据行
|
||||
student_name = dfcurrent.iloc[row,0]
|
||||
student_id = dfcurrent.iloc[row,1]
|
||||
diffs = dfcurrent.iloc[row,validcols]/marks
|
||||
if max(diffs)>1:
|
||||
print("满分数据有误!!!")
|
||||
return False
|
||||
else:
|
||||
diffs_out = [f"{t:.3f}" for t in diffs]
|
||||
for id in correspondence_dict:
|
||||
cols = correspondence_dict[id]
|
||||
if not len(cols) == 0 and not (id in exclude and classname[-3:] in generate_classid(exclude[id])):
|
||||
diffs = [diffs_out[u] for u in cols]
|
||||
usages = {
|
||||
"ID": id,
|
||||
"date": paperdate,
|
||||
"studentid": student_id,
|
||||
"studentname": student_name,
|
||||
"diff": diffs,
|
||||
"answersheet": xiaoxianpid
|
||||
}
|
||||
outputlist.append(usages)
|
||||
return outputlist
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def CalculateUsages(statsfilepathlist,statsfilename,gradename,threshold,marks,correspondence_dict,validcols,date,exclude = {}): #根据统计数据所在的路径,文件名,年级,阈值,分数列表和题号列数(0-len(validcols))对应字典,以及原excel文件中的有效列位置validcols, 日期date, 生成usages的metadata.txt文件的内容, 如果有正确率大于1的则返回False
|
||||
output = "usages\n\n\n"
|
||||
validflag = True
|
||||
|
|
|
|||
Reference in New Issue