• 大小: 7KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-08
  • 语言: Python
  • 标签: python  excel文  

资源简介

该程序实现了,对学生作业的相应文件的检索,然后找出文件名中的学生学号;最后,在学生名单中,勾选出没有交作业的学生,并将没交作业的学生信息打印出来,保存在txt文本中。 方便作业的管理,同时可以根据自己的需要,再次开发出属于自己的优质管理系统。

资源截图

代码片段和文件信息

“““
    :function  学生作业管理系统
    :note      将没有交作业的学生,在excel文件名单中标记,并生成相应的 txt 文件
    :problem   目前最多纪录的作业数为 8 次作业,因为表格中的空余为 8 列,如果需要更多作业数
               需要自己手动在excel文件中,插入行的列,方可实现更多数据录入
“““
import os
import re    # 正则表达式支持包
import xlwt  # 表格文件写入包
import xlrd  # 表格文件读取包
from openpyxl import *

# 获取给定路径下的所以文件
def fileName(filePath):
    “““
    os.walk(filePath)  遍历的是整个路径下的文件
    返回的是一个元组,第一个元素是 当前目录下的路径 第二个是路径下的子目录
    第三个是 当前路径下所有的非目录文件
    :param filePath:
    :return: 文件名中的数字字符
    “““
    retL = []
    for rootdirstpaths in os.walk(filePath):
        # print(root)  # 当前目录下的路径
        # print(dirs)  # 文件下的子目录
        # print(tpath) # 当前目录下所有的非目录文件
        # 分离非目录文件中的字符串
        # print(tpaths)
        for path in tpaths:
            retL.append(getNumber(path))
    return retL

def getNumber(inStr):
    “““
    从输入的字符串中获取数字字符串
    :param inStr:
    :return: outStr
    “““
    matchStr = r‘[0-9a-zA-Z]+‘ # ‘\d+‘  # 使用正则表达式进行匹配其中的数字数据
    s = re.findall(matchStrinStr)
    if s==[]:
        return None
    else:
        return s[0]
    # print( re.findall(matchStr‘唐鸿2010bafg12‘)[0])

def judgeFileExist(lstNumberdirStu):
    “““
    判断学生作业是否存在
    :param lstNumber: 学生作业文件名中的学号
    :param dirStu: 学生姓名与学号信息
    :return:tmpDir: 返回没有作业的学生信息
    “““
    tmpDir = dirStu.copy()   # 深层复制学生字典信息
    if lstNumber==None or dirStu==None:
        return
    if not isinstance(dirStudict):
        return
    if not isinstance(lstNumberlist):
        del tmpDir[lstNumber]
    else:
        lstLen = len(lstNumber)
        for nloop in range(lstLen):
            try:
                strNumber = lstNumber[nloop]
                del tmpDir[strNumber] # 删除已交作业的人的信息
            except:
                pass
    return tmpDir

def getXlsxDate(xlsxPath):
    “““
    获取表格文件数据
    :param xlsxPath: 表格文件路径
    :return: retdir: dir类型数据
    “““
    retdir={}  # 使用字典,方便数据一一对应
    rdWb = xlrd.open_workbook(xlsxPath)  # 打开表格文件
    rdWs = rdWb.sheet_by_index(0)
    sheetRows = rdWs.nrows   # 表格行数
    sheetCols = rdWs.ncols   # 表格列数
    # 取出表格中的第一列和第二列数据
    for row in range(5sheetRows):    # 学生信息从第5行开始的  其实也可以使用filter函数 滤除不是学号的信息
        # 排除第一列非数字数据
        stuName = rdWs.row_values(row)[2].replace(‘\xa0‘‘‘)
        # 替换字符串中的 \xa0 标志符,这是转码时出现的问题,然后删除字符串中的 空格字符
        stuNumber = rdWs.row_values(row)[1].replace(‘\xa0‘‘‘).strip(‘ ‘)
        if stuName==‘‘or stuNumber==‘‘:
            pass
        else:retdir[stuNumber] = stuName
    # print(len(retdir))
    ret

评论

共有 条评论