Python未完成名单统计 TXT文件版
背景
学校经常需要统计教师在信息化平台上的执行和完成情况,由于教师比较多,需要筛选出未完成的教师用于提醒其尽快完成。
有全校教师名单和已完成的教师名单,但是其中的顺序是乱的,手动筛选出未完成的名单比较困难。借助Python中的集合功能能很好地完成。
import tkinter as tk from tkinter import ttk, filedialog, messagebox import os import re class TxtTeacherChecker: def __init__(self): self.root = tk.Tk() self.root.title("教师任务完成统计工具 TXT版") self.root.geometry("600x400") self.create_widgets() def create_widgets(self): # 文件选择区域 ttk.Label(self.root, text="全部教师名单:").grid(row=0, column=0, padx=10, pady=5) self.entry_all = ttk.Entry(self.root, width=50) self.entry_all.grid(row=0, column=1) ttk.Button(self.root, text="浏览", command=lambda: self.select_file(self.entry_all, "*.txt")).grid(row=0, column=2) ttk.Label(self.root, text="已完成名单:").grid(row=1, column=0) self.entry_done = ttk.Entry(self.root, width=50) self.entry_done.grid(row=1, column=1) ttk.Button(self.root, text="浏览", command=lambda: self.select_file(self.entry_done, "*.txt")).grid(row=1, column=2) # 操作按钮 ttk.Button(self.root, text="开始筛选", command=self.process_files).grid(row=2, column=1, pady=10) # 日志显示 self.log_text = tk.Text(self.root, height=10, width=70) self.log_text.grid(row=3, column=0, columnspan=3, padx=10, pady=5) self.log_text.insert(tk.END, "操作日志:\n") def select_file(self, entry, filetype): filepath = filedialog.askopenfilename( title="选择文本文件", filetypes=[("文本文件", filetype), ("所有文件", "*.*")] ) entry.delete(0, tk.END) entry.insert(0, filepath) def process_files(self): try: # 读取文件 all_teachers = self.read_txt(self.entry_all.get()) done_teachers = self.read_txt(self.entry_done.get()) # 数据清洗(去除所有空格) all_set = {name.replace(" ", "") for name in all_teachers if name.strip()} done_set = {name.replace(" ", "") for name in done_teachers if name.strip()} # 筛选未完成名单 undone = sorted(all_set - done_set) # 导出结果 output_path = os.path.join(os.path.dirname(self.entry_all.get()), "未完成名单.txt") with open(output_path, 'w', encoding='utf-8') as f: f.write("".join(undone)) # 显示日志 self.log_text.insert(tk.END, f"处理成功!\n" f"全部教师人数:{len(all_set)}\n" f"已完成人数:{len(done_set)}\n" f"未完成人数:{len(undone)}\n" ) messagebox.showinfo("完成", f"结果已保存至:\n{output_path}") except Exception as e: messagebox.showerror("错误", f"处理失败:{str(e)}") self.log_text.insert(tk.END, f"错误:{str(e)}\n") def read_txt(self, path): """读取TXT文件并返回列表""" if not os.path.exists(path): raise FileNotFoundError(f"文件不存在:{path}") with open(path, 'r', encoding='utf-8') as f: return f.readlines() if __name__ == "__main__": app = TxtTeacherChecker() app.root.mainloop()
打包成exe
pyinstaller -w -F -i your.ico TeacherCheckTool.py

希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯分享时的吝啬。
浙公网安备 33010602011771号