基于Python的文件统计程序开发

2024-09-27 00:00张翔鹿玉红薛韡
科技资讯 2024年16期

摘要:为解决考试过程中学生提交文件数量大、类型多、易出错等问题,以《实用软件应用》课程考核为例,采用Python语言及第三方库Pandas开发文件统计程序,按照需求分析、总体设和、模块实现,阐述开发流程,侧重介绍交互设计及精确统计函数。该程序既可满足日常作业统计需求,亦可满足考试文件即时统计需求,有效提升了统计的效率和准确性,且易于扩展和移植,具有较好的应用价值及推广价值。

关键词:Python程序开发文件统计模块

DevelopmentofFileStatisticsProgramBasedonPython

ZHANGXiangLUYuhongXUEWei

InstituteofDisasterPrevention,Sanhe,HebeiProvince,065201China

Abstract:Inordertosolvetheproblemsoflargenumberoffiles,multipletypesanderror-proneintheexaminationprocess,thispapertakesthecourseassessmentofPracticalSoftwareApplicationasanexample,usesPythonlanguageandthethird-partylibraryPandastodevelopthefilestatisticsprogram.Thedevelopmentprocessisdescribedaccordingtotherequirementsanalysis,overalldesignandmodulerealization,withemphasisoninteractivedesignandtheaccuratestatisticalfunction.Theprogramcanmeetbothdailyhomeworkstatisticsneedsandreal-timestatisticsneedsforexamdocuments,effectivelyimprovingtheefficiencyandaccuracyofstatistics;anditiseasytoexpandandtransplant,withgoodapplicationvalueandpromotionvalue.

KeyWords:Python;Programmingdevelopment;Filestatistics;Module

随着信息时代的飞速发展,高校考试形式也变得丰富多样。相较于传统的纸质文档(包括试卷、报告、论文等),教师通常倾向于更加环保且安全可靠的电子文档。如何在限定时间内快捷和有效地统计电子文档成为高校考试管理面临的新挑战。

为满足包括文档在内的更多类型文件的统计需求,本文以文件统计为核心目标,阐述其程序设计及实现过程。结合实际教学经历,以《实用软件应用》课程考核为例,展开说明。

1需求分析

1.1基本功能需求

  • 选择存放学生答案的文件夹,每个学生对应一个以学号和姓名命名的子文件夹。后续考虑子文件夹名称不规范问题。
  • 通过多种方式查看学生提交文件情况,以满足不同场景需求,侧重考试过程中即时获得统计数据,以便提醒学生出现误操作,亦可用于日常文件统计。
  • 要求学生提交.docx、.pptx和.xlsx三种类型文件。后续考虑文件有效性问题,如考试时提交文件的修改日期与考试日期不一致。
  • 访问学生名单文档,并将其导入程序。
  • 将统计结果导出,以excel文件形式保存。

1.2扩展功能需求

  • 设定结束时间和时间间隔,自动刷新提交记录。
  • 根据文件提交时间,判断并记录学生是否考试超时。
  • 教研相关的数据分析。

限于篇幅,本文仅介绍基本功能的实现过程。

1.3技术需求

操作系统为Windows10,开发语言为Python3,开发工具选择官网免费的PyCharmCommunityEdition2023.3.5即可。此外,pandas库用于快速处理和分析数据集,通过pip工具安装和管理;os库提供访问文件、管理文件路径等函数;datetime库提供日期和时间处理函数。os库和datetime库皆为Python标准库,无需安装。在脚本中导入相关模块,即可使用其中所有函数和方法。

鉴于人工智能在软件开发领域的广泛应用,为缩短开发周期,借助百度AI助手中心提供的Python编程助手搭建基本功能函数框架,在此基础上,补充细节代码。程序整体架构相对复杂,需人工决策完成。

2总体设计

为提高代码复用率,秉持着模块化的设计理念编写程序。日常文件统计与考试文件统计的最大区别在于文件的时间效力。也就是说,日常统计文件时,大多只考虑文件的名称及类型,如林玫[1]和魏晨希[2]设计的作业统计程序,还有依据代码文件特征检测抄袭行为,如张峰等人[3]、曾杰等人[4-5]和刘飞翔等人[6]分别提出不同的检测方法。统计考试文件时,需要额外考虑文件的时间属性,若文件的修改日期为考试日期,则是有效的答案文件,否则为无效的素材文件,鉴于此,可将时间作为参数传递给统计函数,以实现相同函数在不同场景中的文件统计功能。

基于需求分析,程序功能模块划分如图1所示。根据统计数据的粒度,统计函数分为粗略统计和精确统计。粗略统计以文件夹为分析对象,精确统计以文件夹及其下所有文件为分析对象,二者结合使用,让统计工作实现粗中有细,逐层细化。

考试过程中,学生提交文件的数量呈现递增趋势。初期文件较少时,适宜统计提交文件的学生名单;后期文件较多时,适宜统计未提交文件的学生名单。这样有助于更快发现问题,如学生文件夹名称不对、答案文件数量不对等。在粗略统计和精确统计中,针对这两种情况都做了考虑。

自动刷新是为解决考试人数众多或提交时间密集时手动操作效率低下问题而设计的,设定截止时间和刷新间隔两个参数,程序自动进行统计工作。超时统计是考试结束后对全部答案文件的提交时间进行超时判断,显示并保存统计结果。数据分析可根据课程教学改革需求选择数据进行具体分析,此处不再赘述。

3模块实现

3.1操作界面

操作界面能够反映用户与程序的交互是否清晰合理,设计目标为符合操作流程的同时尽量减少操作步骤。

首先,不同场景的功能需求不同,操作界面分为二级。其次,确定文件路径和学生名单是统计的前提条件,为简化操作步骤,学生名单与提交文件置于同一目录下,在二级界面显示前,仅需输入文件路径。最后,多种统计方法结合,满足不同层次的统计需求。界面设计最终效果如图2~4所示。并以2023年《实用软件应用》期末考试某考场数据为例进行测试,见表1。

3.2粗略统计

粗略统计仅统计学生文件夹,不对下一级文件进行检查。该类型统计可以发现未提交学生名单及已提交文件夹的名称错误(没有包含学号或姓名关键信息),但无法确认学生文件夹中答案文件是否齐备,甚至是否包含答案文件。

考虑到在当前路径下有33个一级子文件夹,在日常文件统计时,查看未提交信息更为直观。输入“12”,显示结果如图5所示,可知有2名未提交学生,包括1名缓考学生和1名文件夹名称不对的学生。

3.3精确统计

精确统计不仅统计学生文件夹,还对所有下级文件夹进行递归检查。在粗略统计的基础上,判定学生文件夹中答案文件是否齐备,方便老师提醒学生提交缺失文件,弥补粗略统计漏洞。

图6对粗略统计得到的31名学生文件夹进一步分析,查看答案文件提交详情,可知有2名学生各缺少1份答案文件。图7显示,由于考试场景考虑时间因素,因此,同一份数据日常统计和考试统计可能会得到不同的结果。精确统计函数关键代码如图8所示,利用参数choice_time区分日常文件统计与考试文件统计。

4结语

经测试,该程序具有可读性、健壮性和扩展性,既可应用于日常统计文件工作,亦可应用于考试情景下即时统计文件工作。为提高可移植性,使用PyInstaller工具将其打包为.exe格式的可执行文件,方便传输和终端执行。

通过该文件统计程序,考务人员可以高效管理学生文件,更专注于监控考场和处理突发情况。同时,电子文件易于检索、共享、存档和备份,为考试数据的长期保存和协作管理提供了可靠保障。因此,高校考试中采用文件统计程序是必然趋势,有助于提升考试管理的现代化水平。

参考文献

[1]林玫.RCC平台上作业统计的Python程序设计与实现[J].河北软件职业技术学院学报,2023,25(2):24-28.

[2]魏晨希.基于Python的作业统计程序设计与实现[J].电脑编程技巧与维护,2020(7):3-5,18.

[3]张峰,韦友良,秦玉成.基于程序流程图和图注意力网络的跨语言代码抄袭检测方法[J/OL].小型微型计算机系统,1-9[2024-04-21].

https://kns-cnki-net.webvpn.cidp.edu.cn/kcms/detail/21.1106.TP.20240206.1025.012.html.

  • 曾杰,贲可荣,张献,等.基于程序向量树的代码克隆检测[J].计算机科学与探索,2020,14(10):1656-1669.
  • ZENGJ,BENKR,LIXW,etal.Fastcodeclonedetectionbasedonweightedrecursiveautoencoders[J].IEEEAccess,2019,7:125062-125078.
  • 刘飞翔,龙冬冬,欧幸茹,等.基于抽象语法树的代码抄袭检测方法的改进[J].吉首大学学报(自然科学版),2022,43(6):20-25.