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接收Gmail新邮件并发送到gtalk的方法
Mar 10 Python
python使用xslt提取网页数据的方法
Feb 23 Python
Python3实现购物车功能
Apr 18 Python
浅析Python装饰器以及装饰器模式
May 28 Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
Python中format()格式输出全解
Apr 12 Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 Python
python中selenium库的基本使用详解
Jul 31 Python
Python可以用来做什么
Nov 23 Python
python实现马丁策略的实例详解
Jan 15 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
Jan 28 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
php连接mysql数据库
2017/03/21 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
xml和web特殊字符
2009/04/28 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
快速了解Python中的装饰器
2018/01/11 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
音乐学个人的自荐书范文
2013/11/26 职场文书
人力资源经理自我评价
2014/01/04 职场文书
七年级地理教学反思
2014/01/26 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
2015年前台个人工作总结
2015/04/03 职场文书