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中lambda的用法及其与def的区别解析
Jul 28 Python
Win10下python 2.7.13 安装配置方法图文教程
Sep 18 Python
python自动化生成IOS的图标
Nov 13 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
Dec 31 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
python ansible自动化运维工具执行流程
Jun 24 Python
python疲劳驾驶困倦低头检测功能的实现
Apr 04 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
Email+URL的判断和自动转换函数
2006/10/09 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
PHP培训要多少钱
2017/06/06 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
django表单的Widgets使用详解
2019/07/22 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
2014年市场部工作总结
2014/11/25 职场文书
小学班主任评语
2014/12/29 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
团结友爱主题班会
2015/08/13 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Python中的xlrd模块使用整理
2021/06/15 Python