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中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
python实现发送和获取手机短信验证码
Jan 15 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
使用python3实现操作串口详解
Jan 01 Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 Python
Python socket模块方法实现详解
Nov 05 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
通用的Django注册功能模块实现方法
Feb 05 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
PHP 中的批处理的实现
2007/06/14 PHP
获取远程文件大小的php函数
2010/01/11 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
删除重复数据的算法
2006/11/23 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
python计算方程式根的方法
2015/05/07 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Python如何实现强制数据类型转换
2019/11/22 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
Python使用configparser库读取配置文件
2020/02/22 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
Python如何读写二进制数组数据
2020/08/01 Python
超级实用的8个Python列表技巧
2020/08/24 Python
教师先进工作者事迹材料
2014/05/01 职场文书
成本会计实训报告
2014/11/05 职场文书
读后感作文评语
2014/12/25 职场文书
部队个人年终总结
2015/03/02 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js