絮絮叨叨
老板给了一份学生期末作业的文件,里面有两个文件夹,分别是优秀作业和良好作业,让我把作业情况统计一下。
***,全是这种无脑体力活,打开文件夹一看,心态也是炸,文档交的名字那叫一个烂七八糟。不知道是交了多年作业的不长进,还是收了多年作业的不长进。
牢骚归牢骚,事来了,活要干呢。
干!
import os
import xlrd
import pandas as pd
# 获取文件名
def get_file_names(path):
L = []
for root, dirs, files in os.walk(path):
for file in files:
L.append(os.path.join(root, file))
return L
# 获取名单
def excel_deal(you,liang):
# 打开文件
data = xlrd.open_workbook('names.xlsx')
# 查看工作表
data.sheet_names()
print("sheets:" + str(data.sheet_names()))
# 通过文件名获得工作表,获取工作表1
table = data.sheet_by_name('Sheet1')
# 获取行数和列数 行数:table.nrows 列数:table.ncols
print("总行数:" + str(table.nrows))
print("总列数:" + str(table.ncols))
out_list = []
for rowNum in range(table.nrows):
if rowNum > 0:
rowVale = table.row_values(rowNum)
id_str = rowVale[0]
name_str = rowVale[1]
value0 = 0
value1 = 0
value2 = 0
#按照学号查找
if you.find(id_str) > 0:
value0 = 1
if liang.find(id_str) > 0:
value0 = 2
#按照 姓名查找
if you.find(name_str) > 0:
value1 = 1
if liang.find(name_str) > 0:
value1 = 2
#综合
if value0 == 0 and value1 == 0:
value2 = 0
else:
if value0 > 0 and value1 > 0 and value0 != value1:
print('-Error--'+name_str)
value2 = max(value0, value1)
value_str = str(value0)+','+str(value1)+','+str(value2)
# print(value_str)
out_list.append([rowVale[0],rowVale[1],value0,value1,value2])
print(out_list)
name = ['学号', '姓名', '学号比对', '姓名比对', '综合']
out_data = pd.DataFrame(columns=name, data=out_list)
print(out_data)
out_data.to_csv('./result.csv', encoding='gbk')
out_data.to_excel('./result.xlsx', encoding='gbk')
#print(str(rowNum)+','+name_str+','+str(value)+'\n')
if __name__ == '__main__':
you_data = get_file_names('./you/')
you_str = ''.join(you_data)
print(len(you_data))
print(you_str)
liang_data = get_file_names('./liang/')
liang_str = ''.join(liang_data)
print(len(liang_data))
print(liang_str)
excel_deal(you_str,liang_str)
再说两句
根据作业命名的多样性,采用学号匹配和名字匹配,和提前拿到的名单一一比对,最后对提交情况做一个合并处理。
不唠了,我去催作业了!对于没交作业的漏网之鱼,重点批评。