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将html转成PDF的实现代码(包含中文)
Mar 04 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
深入理解python中的atexit模块
Mar 07 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
python实现验证码识别功能
Jun 07 Python
python 读取文件并替换字段的实例
Jul 12 Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 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数组中包含中文的排序方法
2014/06/03 PHP
解决CodeIgniter伪静态失效
2014/06/09 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
JQuery 插件模板 制作jquery插件的朋友可以参考下
2010/03/17 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
jQuery 动画与停止动画效果实例详解
2020/05/19 jQuery
跟老齐学Python之关于类的初步认识
2014/10/11 Python
Python列表计数及插入实例
2014/12/17 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
Python Flask-web表单使用详解
2017/11/18 Python
python版学生管理系统
2018/01/10 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
详解Python做一个名片管理系统
2019/03/14 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python实现图片九宫格分割
2021/03/07 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis