python分析作业提交情况
时间:2019-04-10
本文章向大家介绍python分析作业提交情况,主要包括python分析作业提交情况使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这次做一个比较贴近我实际的东西:python分析作业提交情况。
要求:
将服务器中交作业的学生(根据文件的名字进行提取)和统计成绩的表格中的学生的信息进行比对,输出所有没有交作业的同学的信息(学号和姓名),并输出所交的作业中命名格式有问题的文件名的信息(如1627406012_E03....)。
提示:
提示:
1、根据服务器文件可以拿到所有交了作业的同学的信息。
2、根据表格可以拿到所有上课学生的信息
3、对1和2中的信息进行比对,找出想要得到的信息
注意:提取服务器中学生交的作业的信息的时候应该考虑到文件格式不对的情况,所以提取信息的时候要做好相关的处理,以避免异常。
下面直接上程序(python3的版本):
#coding:utf-8 import os import xlrd """ 此函数用于获取dir文件夹中的文件的内容,dir中不能含有中文名 """ def getFilesInfo(dir): fileNum=dir[len(dir)-2:len(dir)] # 取得题目的编号 trueList=[] errorList=[] t=os.walk(dir) for item in t: for name in item[2]: if len(name)!=18: errorList.append(name) else: if name[13:15]==fileNum: trueList.append(name[0:10]) else: errorList.append(name) return [trueList,errorList] # 此函数用于读取xml表格文件中的内容 def readTableContent(fileName): date=xlrd.open_workbook(fileName) # sheet_name = date.sheet_names()[0] stuList=[] # 存放学号和姓名 try: # 获取你要处理的XLS的第一张表 sh = date.sheet_by_index(0) except: print("出现问题") for i in range(2,sh.nrows): id=sh.row_values(i)[1] name=sh.row_values(i)[2] student=(id,name); # 存放学生的学号和姓名的元组 stuList.append(student) return stuList address="D://我的文件/python作业批改/2016级老姜班级作业成绩 2016-10-25.xls" submitStuList=getFilesInfo("D:\E01") stuList=readTableContent(address) # 存放学生的信息的列表 notSubmitStudent=[] # 存放没有提交作业的学生的信息 for student in stuList: if student[0] not in submitStuList [0]: notSubmitStudent.append(student) print("===================没有交作业的人为=============") for student in notSubmitStudent: print(student[0],student[1]) print("===================格式错误的文件为=============") for error in submitStuList[1]: print(error)
对于上面的程序中,用到了一个读取表格的包xlrd,这个包需要自己进行下载,在pycharm中,直接进行如下步骤的下载:
1、首先进行如下操作:
2、然后点击“+”号(由于我是提前下载好了的,所以下面的图中有xlrd的包):
3、在输入框中输入包名并搜索
4、完成安装:
关于程序中使用到的os和xlrd的相关知识可以自行查阅相关的文档,这里不再进行详细说明。
下面是py2.7版本的程序:
#coding:utf-8 import os import xlrd import xlwt """ 此函数用于获取dir文件夹中的文件的内容,dir中不能含有中文名 """ def getFilesInfo(dir): fileNum=dir[len(dir)-2:len(dir)] # 取得题目的编号 trueList=[] errorList=[] t=os.walk(dir) for item in t: for name in item[2]: if len(name)!=18: errorList.append(name) else: if name[13:15]==fileNum: trueList.append(name[0:10]) else: errorList.append(name) return [trueList,errorList] # 此函数用于读取xml表格文件中的内容 def readTableContent(fileName): date=xlrd.open_workbook(fileName) # sheet_name = date.sheet_names()[0] stuList=[] # 存放学号和姓名 try: # 获取你要处理的XLS的第一张表 sh = date.sheet_by_index(0) except: print "出现问题" for i in range(2,sh.nrows): id=sh.row_values(i)[1].encode('utf-8') name=sh.row_values(i)[2] student=(id,name); # 存放学生的学号和姓名的元组 stuList.append(student) return stuList address=unicode("D://我的文件/python作业批改/2016级老姜班级作业成绩 2016-10-25.xls",'utf-8') # 对于中文名的路径要进行转换 submitStuList=getFilesInfo("D:\E01") stuList=readTableContent(address) # 存放学生的信息的列表 notSubmitStudent=[] # 存放没有提交作业的学生的信息 for student in stuList: if student[0] not in submitStuList [0]: notSubmitStudent.append(student) print "===============没有交作业的人为=============" for student in notSubmitStudent: print student[0],student[1] print "===============格式错误的文件为=============" for error in submitStuList[1]: print error
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Visual Studio 2008 debug的时候发生郁闷的错误ContextSwitchDeadlock was detected
- LINQ TO XML
- 不被未来折叠掉:AI时代下的思考
- Google 分析的基准化测试
- WebFont 三宗罪之一:WebFont 与 FOUT
- 探究基于声明的身份标识
- 深化“互联网+先进制造业”发展工业互联网的系列解读二:打造平台体系
- WebFont 三宗罪之二:吹毛求疵的WebFont 渲染差异
- IDC发布IT转型报告,现代化、自动化、转型三要素必不可少
- 存储过程和触发器的应用
- 两部委印发车联网产业标准体系建设指南 提到了自动驾驶
- 状态开关按钮ToggleButton
- 微软开放 .NET 框架源代码
- Angularjs基础(十二)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- centos7.2.1511安装jdk1.8.0_151及mysql5.6.38的方法
- Linux CentOS使用crontab设置定时重启的方法
- centos安装php5、卸载php、安装php7的教程
- centos7中crontab定时计划任务5分钟一次命令写法
- Ubuntu16.04 安装Teamviewer的教程详解
- 01 . OpenResty简介部署,优缺点,压测,适用场景及用Lua实现服务灰度发布
- 详解Linux iptables 命令
- 详解fedora 开启 apache 并 开启目录浏览模式
- CentOS新建用户并使能密钥登录的方法
- Linux系统扩容根目录磁盘空间的操作方法
- Linux如何查看进程栈信息示例
- linux查看硬盘大小与挂载硬盘的实现
- centos6.5 安装hadoop1.2.1的教程详解【亲测版】
- Linux中没有rc.local文件的完美解决方法
- 详解linux lcd驱动编写