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 实现插入排序算法
Jun 05 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
python3实现随机数
Jun 25 Python
Python3.7中安装openCV库的方法
Jul 11 Python
Python内存读写操作示例
Jul 18 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
Python从MySQL数据库中面抽取试题,生成试卷
Jan 14 Python
python turtle绘制多边形和跳跃和改变速度特效
Mar 16 Python
使用python求解迷宫问题的三种实现方法
Mar 17 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
Smarty3配置及入门语法
2017/02/22 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
DIV菜单层实现代码
2010/11/19 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
js初始化验证实例详解
2016/11/26 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
python验证码识别的实例详解
2016/09/09 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
医院护理人员的自我评价分享
2013/10/04 职场文书
高中生学习生活的自我评价
2013/10/09 职场文书
大学生个人事迹材料
2014/01/21 职场文书
司机岗位职责说明书
2014/07/29 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
Apache自带的ab压力测试工具的实现
2022/07/23 Servers