平台:
64位系统
说明:
全班的作业在一个文件夹中,标准化命名后统计出谁没交作业
所用库:
#有几个用不上
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from lxml import etree
from tkinter import *
import requests
import random
import pyautogui
import pyperclip
import re
import os
import time
from PIL import Image
任务分解:
1.删除学号相同的文件(删除修改时间靠前的)
2.重命名,统一格式
3.生成没交的名单
代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from lxml import etree
from tkinter import *
import requests
import random
import pyautogui
import pyperclip
import re
import os
import time
from PIL import Imagepath = r'' #运行程序前,记得修改主文件夹路径!
text=""
var=1
Sno={}
Sno_18={'191530101':'张三','191530102':'张四'}#以字典的形式存入学生信息
def no_data():re_no = set()os.chdir(path)old_names = os.listdir( path ) #取路径下的文件名,生成列表for f_name in old_names: #遍历列表下的文件名for s_name in old_names: #遍历列表下的文件名if f_name.split('-')[0] == s_name.split('-')[0]:f_time = os.stat(os.path.abspath(f_name)).st_mtimes_time = os.stat(os.path.abspath(s_name)).st_mtimeif s_time < f_time:re_no.add(s_name)for i in re_no:os.remove(i)def rename_subfolders(): old_names = os.listdir( path ) #取路径下的文件名,生成列表for old_name in old_names: #遍历列表下的文件名if old_name.split('.')[1] == 'docx' or old_name.split('.')[1] == 'doc' : #防止脚本文件放在path路径下时,被一起重命名tail = old_name.split('.')[1]sno=old_name.split('-')[0] new_name = sno + '-' + Sno[sno] + '-' +text + '.' + tailos.rename(os.path.join(path,old_name),os.path.join(path,new_name)) #子文件夹重命名def no_summit_stu():old_names = os.listdir( path ) #取路径下的文件名,生成列表for old_name in old_names: #遍历列表下的文件名if old_name.split('.')[1] == 'docx' or old_name.split('.')[1] == 'doc' : sno=old_name.split('-')[0]Sno.pop(sno)f = open(path +'/not_summit.txt','w',encoding='utf-8')for k,v in Sno.items(): # 遍历字典中的键值s2 = str(v) f.write(k+'\t') f.write(s2+'\n')def window():window = Tk()window.title('rename')window.geometry('1000x500') l = Label(window, text='修改文件名&&统计名单', bg='green', font=('Arial', 12), width=30, height=2)# 说明: bg为背景,font为字体,width为长,height为高,这里的长和高是字符的长和高l.pack() var_usr_name = StringVar()Label(window, text='path:',font=('Arial', 14)).place(x=300, y=100)Entry(window, textvariable=var_usr_name, font=('Arial', 14)).place(x=375,y=100)var_usr_id = StringVar()Label(window, text='suffix:',font=('Arial', 14)).place(x=300, y=150)Entry(window, textvariable=var_usr_id, font=('Arial', 14)).place(x=375,y=150)global varvar = IntVar()var.set(1)def r1():global varvar =1def r2():global varvar =0r1 = Radiobutton(window, text='不改后缀', variable=var, value=1,font=('Arial', 14),command=r1).place(x=500,y=200)r2 = Radiobutton(window, text='改后缀', variable=var, value=0,font=('Arial', 14),command=r2).place(x=375,y=200)def hit_me():global Sno,Sno_18Sno=Sno_18.copy()global pathpath = var_usr_name.get()no_data()if var==0:print('OK')global texttext = var_usr_id.get()rename_subfolders()no_summit_stu()b = Button(window, text='确定', font=('Arial', 12), width=10, height=1, command=hit_me).place(x=436,y=250)window.mainloop()if __name__ == '__main__': window()
转EXE:
pyinstaller -F 绝对路径 -w
缺陷:
只适用于自己班,因为学生信息是自己班的
总结:
实测好用,免去检查了。有建议欢迎表达。
QQ:1071949367,交个朋友!