栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 帮学委收作业

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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()
这样大功告成

下面献上完整代码

#!/usr/bin/python3
# -*- 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图标打包

也不知道为什么封装不起来
就是一直打不开

有会的大佬能不能评论区给出答案?
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/580424.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号