python分析作业提交情况


Posted in Python onNovember 22, 2017

这次做一个比较贴近我实际的东西:python分析作业提交情况。

要求:

    将服务器中交作业的学生(根据文件的名字进行提取)和统计成绩的表格中的学生的信息进行比对,输出所有没有交作业的同学的信息(学号和姓名),并输出所交的作业中命名格式有问题的文件名的信息(如1627406012_E03....)。

提示:

提示:

1、根据服务器文件可以拿到所有交了作业的同学的信息。

python分析作业提交情况

python分析作业提交情况

2、根据表格可以拿到所有上课学生的信息

python分析作业提交情况

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、首先进行如下操作:

python分析作业提交情况

2、然后点击“+”号(由于我是提前下载好了的,所以下面的图中有xlrd的包):

python分析作业提交情况

3、在输入框中输入包名并搜索

python分析作业提交情况

4、完成安装:

python分析作业提交情况

关于程序中使用到的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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
Python实现简单的代理服务器
Jul 25 Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
python web基础之加载静态文件实例
Mar 20 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 Python
Python分析学校四六级过关情况
Nov 22 #Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 #Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 #Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 #Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 #Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 #Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 #Python
You might like
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
srcElement表格样式
2006/09/03 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
js jquery数组介绍
2012/07/15 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
基于HTML+CSS+JS实现增加删除修改tab导航特效代码
2016/08/05 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
Python中生成Epoch的方法
2017/04/26 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
如何把python项目部署到linux服务器
2020/08/26 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
帕克纽约:PARKER NY
2018/12/09 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
会计专业毕业生推荐信
2013/11/05 职场文书
十八大闭幕感言
2014/01/22 职场文书
初一学生期末评语
2014/04/24 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
筑梦中国心得体会
2016/01/18 职场文书