92 lines
3.4 KiB
Python
92 lines
3.4 KiB
Python
import os,re,json
|
|
|
|
outputfile = "临时文件/已做题目.txt"
|
|
classid = "2023届高三02班"
|
|
new_dir = r"C:\Users\weiye\Documents\wwy sync\23届\四月错题重做"
|
|
|
|
old_dirs = [
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\暑假概率初步续",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\上学期测验卷",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\上学期周末卷",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\第一轮复习讲义",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\其他讲义与试卷",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\赋能",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\正态分布及成对数据新课",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\下学期测验卷",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\下学期周末卷",
|
|
r"C:\Users\weiye\Documents\wwy sync\23届\第二轮复习讲义"
|
|
|
|
]
|
|
|
|
def id_related(id,prodict,idrespdict):
|
|
for rid in prodict[id]["related"]:
|
|
if rid in idrespdict:
|
|
return True
|
|
return False
|
|
|
|
with open(r"../题库0.3/Problems.json","r",encoding="u8") as f:
|
|
data = f.read()
|
|
pro_dict = json.loads(data)
|
|
|
|
# 收集数据构建已做过的题目的id与试卷-题号-题序对应字典
|
|
id_resp_dict = {}
|
|
|
|
for dir in old_dirs:
|
|
for texfile in os.listdir(dir):
|
|
if ".tex" in texfile:
|
|
with open(os.path.join(dir,texfile),"r",encoding="u8") as f:
|
|
data = f.read()
|
|
ids = re.findall(r"\((\d{6})\)",data)
|
|
for id in ids:
|
|
if not id in id_resp_dict:
|
|
id_resp_dict[id] = [os.path.join(os.path.split(dir)[1],texfile[:-4])+"--题序"+str(ids.index(id)+1)]
|
|
else:
|
|
id_resp_dict[id].append(os.path.join(os.path.split(dir)[1],texfile[:-4])+"--题序"+str(ids.index(id)+1))
|
|
|
|
new_texfiles = [f for f in os.listdir(new_dir) if ".tex" in f]
|
|
|
|
output = ""
|
|
|
|
for texfile in new_texfiles:
|
|
with open(os.path.join(new_dir,texfile),"r",encoding="u8") as f:
|
|
data = f.read()
|
|
ids = re.findall(r"\((\d{6})\)",data)
|
|
output += texfile[:-4] + "\n"
|
|
print(texfile[:-4])
|
|
output += ",".join(ids) + "\n"
|
|
print(",".join(ids))
|
|
for id in ids:
|
|
if id in id_resp_dict:
|
|
results = "\n".join([(id + "\t" + r) for r in pro_dict[id]["usages"] if classid in r])
|
|
print("(%s)\t(已做题)\t%s"%(id,",".join(id_resp_dict[id])))
|
|
print(results)
|
|
output += "(%s)\t(已做题)\t%s\n"%(id,",".join(id_resp_dict[id]))
|
|
output += results + "\n"
|
|
elif id_related:
|
|
rel_ids = pro_dict[id]["related"]
|
|
origins = []
|
|
for id1 in rel_ids:
|
|
if id1 in id_resp_dict:
|
|
origins += id_resp_dict[id1]
|
|
print("(%s)\t(关联题)\t%s"%(id,",".join(origins)))
|
|
output += "(%s)\t(关联题)\t%s\n"%(id,",".join(origins))
|
|
for id1 in rel_ids:
|
|
results = "\n".join([(id1 + "\t" + r) for r in pro_dict[id1]["usages"] if classid in r])
|
|
if len(results) > 2:
|
|
print(results)
|
|
output += results + "\n"
|
|
else:
|
|
print("(%s)\t(无关题)")
|
|
output += "(%s)\t(无关题)\n"
|
|
results = "\n".join([(id + "\t" + r) for r in pro_dict[id]["usages"] if classid in r])
|
|
print(results)
|
|
output += results + "\n"
|
|
print("")
|
|
output += "\n"
|
|
|
|
with open(outputfile,"w",encoding="u8") as f:
|
|
f.write(output)
|
|
|
|
|
|
|