Python实现自助检查作业汇报名单

@

将重复性的工作丢给电脑程序,毕竟自己脑子也快不过电脑。

思路

在收作业时我们会习惯将文件名以学号后两位加上自己的名字方便学委统计人数,那么我们只需要把收齐的作业统一放到一个文件夹里,通过电脑文件自动排好序后,我们只需要用Python读取文件名,再读取我们事先准备好的全班级excel名单文件,将文件名与excel文件中的名字作匹配即可。

开发环境

  • Python
  • 第三方库xlrd

安装xlrd

按下键盘win+r打开运行窗口输入cmd打开命令提示符

输入pip install xlrd==1.2.0

注意: 由于 1.2.0后面得版本取消了对xlsx文件得读取,这里最好安装之前的版本,默认pip安装的是最新版的xlrd库

读取作业文件

  1. 导入os库

import os

  1. 设置读取作业文件名函数
def listdir(path, list_name): #传入存储的list for file in os.listdir(path): file_path = os.path.join(path, file) if os.path.isdir(file_path): listdir(file_path, list_name) else: list_name.append(file_path)
  1. 创建了一个检查列表用于存放交了的人的名单并调用函数
check = [] path = 'x:xxx/xxx/需要检查的作业文件路径' listdir(path,check)

读取Excel文件里的名单

  1. 导入xlrd库
  2. 读取Excel文件里的名单并用字典存入,再用列表装入
init_path = 'x:xxx/xxx/名单文件路径.xlsx' xlsx = xlrd.open_workbook(init_path) table = xlsx.sheet_by_index(0) all_data = [] for n in range(1,table.nrows): id = table.cell(n,6).value name = table.cell(n,7).value sex = table.cell(n,8).value sno_id = table.cell(n,9).value data = {"id":id,"name":name,"sex":sex,"sno_id":sno_id} all_data.append(data)

遍历名单列表,用字典匹配检查列表中的值并存入文件中

匹配的原则采用字符串的切片,os.path.basename(check[j])[0:2]可以显示出文件路径下的文件名并用切片分割出数字

print(os.path.basename(path)+"没交名单:") with open('x:xxx/xxx/需要保存的路径/未交名单.txt',"w",encoding="utf-8")as f: f.write("未交名单:\n") for i in all_data: for j in range(len(check)): if i['id'] == os.path.basename(check[j])[0:2]: # print(i['name'] + "同学有交哦(0_0)") break else: with open('x:xxx/xxx/需要保存的路径/未交名单.txt', "a", encoding="utf-8")as f: f.write(i['sno_id']+i['name']+"\n") print(i['name']+"没交($_$),学号:"+i['id'])

完整的代码

import xlrd import os def flie_check(): # 读取文件路径函数 def listdir(path, list_name): #传入存储的list for file in os.listdir(path): file_path = os.path.join(path, file) if os.path.isdir(file_path): listdir(file_path, list_name) else: list_name.append(file_path) # 创建了一个检查列表用于存放交了的人的名单 check = [] path = 'x:xxx/xxx/需要检查的作业文件路径' listdir(path,check) # 读取Excel文件里的名单并用字典存入,再用列表装入 init_path = 'x:xxx/xxx/名单文件路径.xlsx' xlsx = xlrd.open_workbook(init_path) table = xlsx.sheet_by_index(0) # print(table.cell(1,6).value) all_data = [] for n in range(1,table.nrows): id = table.cell(n,6).value name = table.cell(n,7).value sex = table.cell(n,8).value sno_id = table.cell(n,9).value data = {"id":id,"name":name,"sex":sex,"sno_id":sno_id} all_data.append(data) # print(all_data[0]) # 遍历名单列表,用字典匹配检查列表中的值 print(os.path.basename(path)+"没交名单:") with open('x:xxx/xxx/需要保存的路径/未交名单.txt',"w",encoding="utf-8")as f: f.write("未交名单:\n") for i in all_data: for j in range(len(check)): if i['id'] == os.path.basename(check[j])[0:2]: # os.path.basename(check[j])[0:2]可以显示出文件路径下的文件名并用切片分割出数字 # print(i['name'] + "同学有交哦(0_0)") break else: with open('x:xxx/xxx/需要保存的路径/未交名单.txt', "a", encoding="utf-8")as f: f.write(i['sno_id']+i['name']+"\n") print(i['name']+"没交($_$),学号:"+i['id']) if __name__ == '__main__': flie_check()

__EOF__

本文作者小鹿同学
本文链接https://www.cnblogs.com/exiaolu/p/15866347.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   进击的小鹿  阅读(220)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示