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继承问题
May 29 Python
python删除服务器文件代码示例
Feb 09 Python
python 对象和json互相转换方法
Mar 22 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
基于python历史天气采集的分析
Feb 14 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 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设计模式小结
2013/02/15 PHP
php实现图片压缩处理
2020/09/09 PHP
理清apply(),call()的区别和关系
2011/08/14 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
新奇的小玩意:IWOOT
2016/07/21 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
20岁生日感言
2014/01/13 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
项目工作说明书
2014/07/29 职场文书
工作简历自我评价
2015/03/11 职场文书
2015年市场部工作总结
2015/04/30 职场文书
初一军训感言
2015/08/01 职场文书