平台:
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 Image
path = 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_mtime
s_time = os.stat(os.path.abspath(s_name)).st_mtime
if 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 + '.' + tail
os.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 var
var = IntVar()
var.set(1)
def r1():
global var
var =1
def r2():
global var
var =0
r1 = 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_18
Sno=Sno_18.copy()
global path
path = var_usr_name.get()
no_data()
if var==0:
print('OK')
global text
text = 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,交个朋友!