python 帮学委收作业

收作业小能手

收作业的时侯总是觉得收不齐 对名单太麻烦?
反正我感觉是很难收收完之后还要查谁没有交

麻烦

这不就好起来了嘛?

在这里插入图片描述

思路 咱们就是说先找到那个交作业的文件夹然后把文件名先全部读取出来呗 然后只要学号就行了呗

root = tkinter.Tk()

root.withdraw()
# 选择文件夹
a = tkinter.messagebox.askokcancel(title = '小杨助手',message='请选择要统计未交人作业的文件夹')
# print("请找到要统计的作业文件夹")
Folderpath = filedialog.askdirectory()

# 选择文件
#Filepath = filedialog.askopenfilename()
# 这是想要获取名字的文件夹目录
m = os.listdir(Folderpath)
# print(m)

for i in range(len(m)):
    # 学号 清洗出来
    jiao.append(int(m[i][:10]))#这里要搞成int 不然后面 是int 两个都是list 类型但是就是比较不出来

再咱就是说把全班人的 学号 -姓名找到 就行了呗

b = tkinter.messagebox.askokcancel(title='小杨助手', message='再找到全班人的学号名字的csv')

# print("再找到全班人的学号名字的csv")
Filepath = filedialog.askopenfilename()
# 获取文件编码类型
# 在用pandas.read_csv()读取csv时
# 遇到 ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
# 但是又必须要中文解码,解决办法是设置
# read_csv中encoding = ‘gbk’
df = pd.read_csv(Filepath,usecols=[0,1], encoding="gbk")
df_li = df.values.tolist()
stuNo_name = df.values.tolist()

然后就是对两个列表操作就i行了呗找出两个里面没有的学号然后再返回

for i in range(len(stuNo_name)):
    if stuNo_name[i][0] not in jiao:
        weijiao.append(stuNo_name[i])

为了好看我有把他们放到tk的窗口下面哦

root.destroy()
root = tkinter.Tk()
root.title('小杨助手')
root.geometry('400x400')
# 建立text
text = tkinter.Text(root, undo=True)
text.pack(fill=tkinter.BOTH, expand=True)

# 插入内容
text.insert(tkinter.END,"未交人数:"+ str(len(weijiao)))
for i in range(len(weijiao)):
    text.insert(tk.INSERT, '\n')
    text.insert(tkinter.END,str(weijiao[i][0])+'-'+str(weijiao[i][1]))
root.mainloop()

这样大功告成

下面献上完整代码

# -*- coding:utf-8 -*-
"""
@author:YANGSONGLIN
@file: check.py
@time: 2021/11/20 
@desc: 
"""
import os
import tkinter as tk
from tkinter import filedialog
import pandas as pd
import tkinter.messagebox

jiao = []
weijiao = []
root = tkinter.Tk()

root.withdraw()
# 选择文件夹
a = tkinter.messagebox.askokcancel(title = '小杨助手',message='请选择要统计未交人作业的文件夹')
# print("请找到要统计的作业文件夹")
Folderpath = filedialog.askdirectory()

# 选择文件
#Filepath = filedialog.askopenfilename()
# 这是想要获取名字的文件夹目录
m = os.listdir(Folderpath)
# print(m)

for i in range(len(m)):
    # 学号 清洗出来
    jiao.append(int(m[i][:10]))#这里要搞成int 不然后面 是int 两个都是list 类型但是就是比较不出来
b = tkinter.messagebox.askokcancel(title='小杨助手', message='再找到全班人的学号名字的csv')

# print("再找到全班人的学号名字的csv")
Filepath = filedialog.askopenfilename()
# 获取文件编码类型
# 在用pandas.read_csv()读取csv时
# 遇到 ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
# 但是又必须要中文解码,解决办法是设置
# read_csv中encoding = ‘gbk’
df = pd.read_csv(Filepath,usecols=[0,1], encoding="gbk")
df_li = df.values.tolist()
stuNo_name = df.values.tolist()
# print(df_li)
# stuNo = []
# for s_li in df_li:
#     stuNo.append(s_li[0])
#print(stuNo_name)
# print(jiao)
# print(type(stuNo))list(set(jiao).difference(set(stuNo)))
for i in range(len(stuNo_name)):
    if stuNo_name[i][0] not in jiao:
        weijiao.append(stuNo_name[i])
# weijiao =  list(set(stuNo_name) - set(jiao))  # 求stuNo中有而jiao中没有的元素
root.destroy()
root = tkinter.Tk()
root.title('小杨助手')
root.geometry('400x400')
# 建立text
text = tkinter.Text(root, undo=True)
text.pack(fill=tkinter.BOTH, expand=True)

# 插入内容
text.insert(tkinter.END,"未交人数:"+ str(len(weijiao)))
for i in range(len(weijiao)):
    text.insert(tk.INSERT, '\n')
    text.insert(tkinter.END,str(weijiao[i][0])+'-'+str(weijiao[i][1]))
root.mainloop()

但是我还想把这个家伙封装成exe

Pyinstaller -F setup.py 打包exe
Pyinstaller -F -w setup.py 不带控制台的打包
Pyinstaller -F -i xx.ico setup.py 打包指定exe图标打包

也不知道为什么封装不起来
就是一直打不开
请添加图片描述

有会的大佬能不能评论区给出答案?

更新记录

其实只要封装简单点就行,你可以另外新建一个独立的环境来专门封装

pyinstaller -F -w x.py

完成之后是这样的感觉还是有点大
在这里插入图片描述
能用了好耶

posted @ 2021-11-21 13:35  Yang-blackSun  阅读(6)  评论(0编辑  收藏  举报  来源
1 3