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 (2)
Oct 31 Python
让python的Cookie.py模块支持冒号做key的方法
Dec 28 Python
Python中的进程分支fork和exec详解
Apr 11 Python
python开发之字符串string操作方法实例详解
Nov 12 Python
bat和python批量重命名文件的实现代码
May 19 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
使用python如何删除同一文件夹下相似的图片
May 07 Python
Python如何配置环境变量详解
May 18 Python
python多次执行绘制条形图
Apr 20 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执行速度全攻略(下)
2006/10/09 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
Underscore源码分析
2015/12/30 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
CryptoJS中AES实现前后端通用加解密技术
2018/12/18 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
粗略分析Python中的内存泄漏
2015/04/23 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
python操作列表的函数使用代码详解
2017/12/28 Python
Python模块的加载讲解
2019/01/15 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
django-初始配置(纯手写)详解
2019/07/30 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
Delphi笔试题
2016/11/14 面试题
出国导师推荐信
2015/03/25 职场文书
员工手册编写范本
2015/05/14 职场文书
小学运动会入场词
2015/07/18 职场文书
中秋晚会致辞
2015/07/31 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
dubbo服务整合zipkin详解
2021/07/26 Java/Android