python分析作业提交情况
作者:陌上行走 发布时间:2023-07-29 20:59:31
标签:python,作业情况
这次做一个比较贴近我实际的东西:python分析作业提交情况。
要求:
将服务器中交作业的学生(根据文件的名字进行提取)和统计成绩的表格中的学生的信息进行比对,输出所有没有交作业的同学的信息(学号和姓名),并输出所交的作业中命名格式有问题的文件名的信息(如1627406012_E03....)。
提示:
提示:
1、根据服务器文件可以拿到所有交了作业的同学的信息。
2、根据表格可以拿到所有上课学生的信息
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、首先进行如下操作:
2、然后点击“+”号(由于我是提前下载好了的,所以下面的图中有xlrd的包):
3、在输入框中输入包名并搜索
4、完成安装:
关于程序中使用到的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
来源:http://blog.csdn.net/qq_29883591/article/details/54583509


猜你喜欢
- js判断undefined类型今天使用showModalDialog打开页面,返回值时。当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回
- 一、背景:在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等w
- 前言最近尝试重新封装XMLHttpRequest,在发post请求的时候,发现express通过req.body获取不到数据,req.bod
- 在工作中遇到过 个问题执行一条代码时间过长 而且还不报错,卡死在那。还要继续执行下面代码,如何操作。下面是个简单的实例pip安装 第三方ev
- 路由路由可以定义在工程的目录下(看你的需求),也可以定义在各个应用中来保存应用的路由,用主路文件urls中使用include()包含各个应用
- 引言在负责咨询工作的过去 6 年中,我曾多次听说关于数据访问和操作方面的问题,它时刻困扰着用户:“如何编写应用程序,以便
- iframe标签在网页中可以创建一个内嵌框架,通过指定src属性来调用另一个网页文档的内容。和frameset一样,用它来对网页结构进行拆分
- wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概。首
- 前言首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?ECMAScript是一个国际通过的标准化脚本语
- 引言本文讨论 ChatGTP 与 Node.js 的结合,由于最近在学 Remix, 考虑到 Remix 可以单独的作为 API 来使用,并
- 很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考---
- 本篇文章将介绍:xlwt 常用功能xlrd 常用功能xlutils 常用功能xlwt写Excel时公式的应用xlwt写入特定目录(路径设置)
- 设置自动的参数注释标识如何使用pycharm自动添加引用注释描述功能使用场景多行注释,且需要对传入的参数以及返回值进行详尽的阐述时,如下图设
- 正在看的ORACLE教程是:自动备份Oracle数据库。
- 当产品走到HTML Coding这块,多浏览器的测试是很重要,也很麻烦的一个环节。现在大家主要是保证IE6,7及Firefox的一致。bro
- 第一步一般是建立一个关键字替换表 如 id keyword url 等字段第二步是文章显示时把【文章】内容和【关键字替换表】对应的关键字替换
- 1 Series线性的数据结构, series是一个一维数组Pandas 会默然用0到n-1来作为series的index, 但也可以自己指
- 提要:作为普通的Python开发者来讲,深入理解object、type不是必要的,但了解他们确实元编程这个词很多朋友都听过,可能用的却不多。
- 简介观察者模式是行为型模式的一种,定义了对象间一对多的关系。当对象的状态发生变化时候,依赖于它的对象会得到通知。适用场景类似触发钩子事件,可
- 本文实例讲述了Python实现爬取马云的微博功能。分享给大家供大家参考,具体如下:分析请求我们打开 Ajax 的 XHR 过滤器,然后一直滑