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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
详解Django通用视图中的函数包装
Jul 21 Python
十条建议帮你提高Python编程效率
Feb 16 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
Python中捕获键盘的方式详解
Mar 28 Python
基于django传递数据到后端的例子
Aug 16 Python
python3图片文件批量重命名处理
Oct 31 Python
python实现在一个画布上画多个子图
Jan 19 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 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
天津市收音机工业发展史
2021/03/04 无线电
ThinkPHP写第一个模块应用
2012/02/20 PHP
smarty表格换行实例
2014/12/15 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
jQuery 1.0.2
2006/10/11 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
Python字符串格式化输出方法分析
2016/04/13 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
工业自动化毕业生自荐信范文
2014/01/04 职场文书
联欢晚会主持词
2014/03/25 职场文书
五心教育心得体会
2014/09/04 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
python unittest单元测试的步骤分析
2021/08/02 Python
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS