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 相关文章推荐
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
Pycharm学习教程(3) 代码运行调试
May 03 Python
python中hashlib模块用法示例
Oct 30 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
Python爬虫学习之获取指定网页源码
Jul 30 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
Pytorch 实现权重初始化
Dec 31 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
详解Python flask的前后端交互
Mar 31 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
微信小程序实现上传图片功能
2018/05/28 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
Python随机数random模块使用指南
2016/09/09 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
python双向链表原理与实现方法详解
2019/12/03 Python
The North Face北面英国官网:美国著名户外品牌
2017/12/13 全球购物
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
担保书怎么写
2014/04/01 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
2015年清明节扫墓演讲稿
2015/03/18 职场文书
运动会3000米加油稿
2015/07/21 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL