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 MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
Python控制Firefox方法总结
Jun 03 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
python实现双色球随机选号
Jan 01 Python
浅析Python 序列化与反序列化
Aug 05 Python
详解Python 中的 defaultdict 数据类型
Feb 22 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入门小知识
2008/03/24 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
php实现的短网址算法分享
2014/06/20 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
在python中bool函数的取值方法
2018/11/01 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
计算机维护专业推荐信
2014/02/27 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
大学毕业生个人总结
2015/02/28 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
信用卡工资证明范本
2015/06/19 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
webpack的移动端适配方案小结
2021/07/25 Javascript