diff --git a/工具v2/Ui_获取小闲平台使用数据.py b/工具v2/Ui_获取小闲平台使用数据.py index 70bd44ac..6f35bd8d 100644 --- a/工具v2/Ui_获取小闲平台使用数据.py +++ b/工具v2/Ui_获取小闲平台使用数据.py @@ -53,6 +53,18 @@ class Ui_Form(object): self.lineEdit_threshold = QLineEdit(Form) self.lineEdit_threshold.setObjectName(u"lineEdit_threshold") self.lineEdit_threshold.setGeometry(QRect(420, 10, 113, 20)) + self.pushButton_selectdirpath = QPushButton(Form) + self.pushButton_selectdirpath.setObjectName(u"pushButton_selectdirpath") + self.pushButton_selectdirpath.setGeometry(QRect(390, 40, 75, 24)) + self.label_5 = QLabel(Form) + self.label_5.setObjectName(u"label_5") + self.label_5.setGeometry(QRect(290, 40, 101, 20)) + self.label_6 = QLabel(Form) + self.label_6.setObjectName(u"label_6") + self.label_6.setGeometry(QRect(230, 40, 31, 16)) + font = QFont() + font.setBold(True) + self.label_6.setFont(font) self.retranslateUi(Form) @@ -65,9 +77,12 @@ class Ui_Form(object): self.label.setText(QCoreApplication.translate("Form", u"\u4e0b\u8f7d\u7684.zip\u6587\u4ef6", None)) self.label_2.setText(QCoreApplication.translate("Form", u"\u65e5\u671f", None)) self.label_3.setText(QCoreApplication.translate("Form", u"(yyyymmdd)", None)) - self.label_filepath.setText(QCoreApplication.translate("Form", u"\u9009\u62e9\u6587\u4ef6\u540e, \u8fd9\u91cc\u5c06\u663e\u793a\u6587\u4ef6\u8def\u5f84", None)) + self.label_filepath.setText(QCoreApplication.translate("Form", u"\u9009\u62e9\u6587\u4ef6\u6216\u6587\u4ef6\u5939\u540e, \u8fd9\u91cc\u5c06\u663e\u793a\u5176\u8def\u5f84", None)) self.pushButton_exec.setText(QCoreApplication.translate("Form", u"\u8fd0\u884c", None)) self.checkBox_appendflag.setText(QCoreApplication.translate("Form", u"Append\u6a21\u5f0f", None)) self.label_4.setText(QCoreApplication.translate("Form", u"\u63d0\u4ea4\u6bd4\u4f8b\u4e0b\u9650", None)) + self.pushButton_selectdirpath.setText(QCoreApplication.translate("Form", u"\u9009\u62e9\u6587\u4ef6\u5939", None)) + self.label_5.setText(QCoreApplication.translate("Form", u"\u53ea\u542b.zip\u7684\u6587\u4ef6\u5939", None)) + self.label_6.setText(QCoreApplication.translate("Form", u"\u6216", None)) # retranslateUi diff --git a/工具v2/获取小闲平台使用数据.py b/工具v2/获取小闲平台使用数据.py index 53c6cff4..e981697a 100644 --- a/工具v2/获取小闲平台使用数据.py +++ b/工具v2/获取小闲平台使用数据.py @@ -10,21 +10,89 @@ class MyWindow(QWidget,Ui_Form): self.bind() self.zipfilepath = "" self.lineEdit_threshold.setText("0.75") + self.singlefile = True def bind(self): self.pushButton_selectfilepath.clicked.connect(self.getFilePath) + self.pushButton_selectdirpath.clicked.connect(self.getDirPath) self.pushButton_exec.clicked.connect(self.exec) def getFilePath(self): pathlist = QFileDialog.getOpenFileName(self,"选择文件",".","zip文件(*.zip);;所有文件(*)") self.label_filepath.setText(pathlist[0]) self.zipfilepath = pathlist[0] + self.singlefile = True date_list = re.findall(r"\((\d{8})\).zip",self.zipfilepath) if len(date_list)>0: date = date_list[0] self.lineEdit_date.setText(date) + + + + def getDirPath(self): + dirpath = QFileDialog.getExistingDirectory(self,"选择文件夹") + self.label_filepath.setText(dirpath) + self.singlefile = False + self.lineEdit_date.setText("自适应") + def exec(self): + if self.singlefile: + self.execsinglefile() + else: + self.execmultifile() + + def execmultifile(self): + directory = self.label_filepath.text() + files = [f for f in os.listdir(directory) if ".zip" in f] + datedfiles = [] + tempdir = "临时文件/zips" + statsfilename = "小题分_按学号(数学).xlsx" + answersheetseekingpath = "../备课组" + glossoutput = "" + threshold = float(self.lineEdit_threshold.text()) + for f in files: + fpath = os.path.join(directory,f) + if len(re.findall(r"\(\d{8}\)",f)) == 0: + print(f"文件 {f} 未标注日期.") + else: + datedfiles.append(fpath) + for zipfpath in datedfiles: + try: + try: + shutil.rmtree(tempdir) + except: + pass + makedir(tempdir) + date = re.findall(r"\((\d{8})\)",zipfpath)[0] + xiaoxianpid = ParseZipname(zipfpath) + paperinfo = FindPaper(xiaoxianpid, answersheetseekingpath) + gradename = paperinfo[1] + idlist = paperinfo[2] + zf = zipfile.ZipFile(zipfpath) + zf.extractall(tempdir) #解压zip文件中的所有内容到tempdir + statsfilepathlist = FindFile(tempdir,statsfilename) + validcols,marks = generateColIndexandMarks(statsfilepathlist,statsfilename,paperinfo) + dfcurrent = pd.read_excel(os.path.join(statsfilepathlist[0],statsfilename)) + correspondence_dict = generateIDtoUsageCorrespondence(idlist,validcols,dfcurrent.iloc[1,validcols]) + output = CalculateUsages(statsfilepathlist,statsfilename,gradename,threshold,marks,correspondence_dict,validcols,date) + if CheckUsagesValidity(output) == 0: + glossoutput += output + else: + print(f"{zipfpath} 数据有误, 可能需要检查每一题的满分数据") + self.label_filepath.setText(f"{zipfpath} 数据有误, 可能需要检查每一题的满分数据") + print(f"文件 {zipfpath} 处理完成") + except: + print(f"{zipfpath} 操作中有错误, 需要检查源数据") + self.label_filepath.setText(f"{zipfpath} 操作中有错误, 需要检查源数据") + SaveTextFile(glossoutput,"文本文件/metadata.txt") + os.system("code 文本文件/metadata.txt") + # print(datedfiles) + + + + + def execsinglefile(self): date = self.lineEdit_date.text() threshold = float(self.lineEdit_threshold.text()) if not len(date.strip()) == 8: diff --git a/工具v2/获取小闲平台使用数据.ui b/工具v2/获取小闲平台使用数据.ui index afc5770f..c320db46 100644 --- a/工具v2/获取小闲平台使用数据.ui +++ b/工具v2/获取小闲平台使用数据.ui @@ -85,7 +85,7 @@ - 选择文件后, 这里将显示文件路径 + 选择文件或文件夹后, 这里将显示其路径 @@ -137,6 +137,50 @@ + + + + 390 + 40 + 75 + 24 + + + + 选择文件夹 + + + + + + 290 + 40 + 101 + 20 + + + + 只含.zip的文件夹 + + + + + + 230 + 40 + 31 + 16 + + + + + true + + + + + +