文章目录

  • 1.目的介绍
  • 2.代码介绍
    • 2.1读取交上来的作业文件夹,并保存
    • 2.2读取全部学生名单并对比交上来的名单,返回未交的‘坏小孩’  
  • 3.未来期望

1.目的介绍

  作为一名学委,常常为收作业感到头疼,尤其赶到期末周,各科作业以各种形式发给我,作业人数齐还好,不齐全还要找谁没交,尤其浪费时间,所有我就用python写了一个小脚本,可以帮助大家快速查找到谁没交作业,下面是代码展示

2.代码介绍(只需要导入os库即可)

2.1 读取交上来的作业文件夹及保存

函数会保存到此路径下的一个res.txt文件下,以方便下面对比的时候用

def ReadfileToTxt(filepath,infiles=True,indirs=True,):
    """
    输入检查文件路径 函数会将文件中的目录名字或者路径名字写入当前路径下的txt文件
    :param infiles 为是否检查文件夹里的文件名字
    indirs 为是否检查文件夹里面的目录名字
    :return
    """
    file = open("res.txt", 'w').close()
    for root, dirs, files in os.walk(filepath, topdown=False):
        if infiles:
            for name in files:
                with open('res.txt',mode='a',encoding='utf-8') as f:
                    f.write(f"{name}\n")
                print(name)
        if indirs:
            for name in dirs:
                print(os.path.join(root, name))

2.2 读取全部学生名单并对比交上来的名单,返回未交的‘坏小孩’

注意全部学生名单 要一个学生一行 因为在下面用的是f.read().spiltlines()

def Contrast(Allpeopath):
    """
    :param Allpeopath:包含全部人员名单的txt文件
    :return:没交人员的列表
    """
    badpeople = [] #保存未交作业的人员名单
    with open(Allpeopath, encoding='utf-8') as f:
        name_list = f.read().splitlines()
        i = 0
        for name in name_list:
            fopen = open("res.txt", 'r', encoding='utf-8')
            line = fopen.read()
            if name in line:
                i+=1
                print(f'{name}交了,共有{i}个人交了')
            else:
                badpeople.append(name)
        for people in badpeople:
            print(f'{people} 没交作业!!')

2.3 运行代码

注意在文件地址前面添加r

ReadfileToTxt(r"C:\Users\Lenovo\Desktop\智能2001 机器学习实验三",indirs=False)
Contrast(r"E:\pythonProject\python_tool\reach_person\智能2001学生名单.txt")

2.4运行结果

 

 3.未来期望

代码目前还只能在python编译器上进行运行,以后尽量使用pyqt将其打包成一个小软件供大家使用。

 

posted on 2022-12-07 22:06  timer0  阅读(208)  评论(0)    收藏  举报