我现在是一个大学生,这是我在做学委是收电子版作业,需要查人数烦了写的一个查作业的python程序很简单,在这里存储一下,各位大佬路过一笑就好,有问题的话望请斧正。
from tkinter import *
from tkinter import filedialog
import tkinter.messagebox
import tkinter as tk
def main():
def selectExcelfile1():
global mdps
mdps = filedialog.askopenfilename(title="选择TXT文件")#'选择Excel文件', filetypes=[('Excel', '*.xlsx'), ('All Files', '*')])
print(mdps)
text1.insert(INSERT, mdps)
def selectExcelfile2():#获得待处理文件位置
global wjps
wjps = filedialog.askdirectory()
print(wjps)
text2.insert(INSERT, wjps)
def selectExcelfile3():#获得结果位置
global wmdps
wmdps = filedialog.askdirectory()
print(wmdps)
text3.insert(INSERT, wmdps)
print(wmdps)
def closeThisWindow():
root.destroy()
def doProcess():
tkinter.messagebox.showinfo('提示', '处理txt文件的示例程序。')
deal(wjps, mdps, wmdps)
def deal(wjps, mdps, wmdps):
md = []
import os # 输入输出的模块以下用于把文件中的所有文件文件名变成一个列表,便于遍历检索目标
caselist = os.listdir(wjps) # OS.listdir是列出目标路径的文件夹以及文件
all_name = "" # 空的字符串
for a in caselist:
all_name += a
print(all_name) # 此时字符串为所有文件的名
data = []
with open(mdps, 'r', encoding='utf-8') as f: # w是创建新文件,r是只读取文件,wb以二进制方式创建新文件,一般是存储图片等文件。utf-8是字符串的操作格式
for line in f.readlines(): # readline() 和 .readlines() 之间的差异是后者一次读取整个文件,前者一次一行
line = line.strip() # strip代表换行。因为在文本中每行开头都有个"/去掉文本中句子开头与结尾的符号的.split() 这样就把每行的每个字符一个个分开。
data.append(line)
print(data) # 检索目标 返回没有找到的文件(人名)
rs=0
for i in range(0, 40):
if all_name.find(data[i]) + 1:
continue
else:
print(data[i])
rs+=1
md.append(data[i])
print("共有",rs,"未交")
rs1=["共有",str(rs),"人未交"]
for i in range(0,3):
md.append(rs1[i])
print(md)
file = open(wmdps + "\\未完成.txt", 'w', ) # 创建了一个文件并“.txt"规定文件类型,并打开文件
file.write(" ".join(md)) # 写入文件
file.close() # 关闭文件
# 初始化
root = Tk()
# 设置窗体标题
root.title('检索文件')
# 设置窗口大小和位置
root.geometry('600x300+570+200')
label1 = Label(root, text='请选择名单文件:')
label2 = Label(root, text='请选择文件夹:')
label3 = Label(root, text='请选择存放结果的文件夹:')
text1 = Entry(root, bg='white', width=45)
text2 = Entry(root, bg='white', width=45)
text3 = Entry(root, bg='white', width=45)
button1 = Button(root, text='浏览', width=8, command=selectExcelfile1)
button4 = Button(root, text='浏览', width=8, command=selectExcelfile2)
button5 = Button(root, text='浏览', width=8, command=selectExcelfile3)
button2 = Button(root, text='处理', width=8, command=doProcess)
button3 = Button(root, text='退出', width=8, command=closeThisWindow)
label1.pack()
label2.pack()
label3.pack()
text1.pack()
text2.pack()
text3.pack()
button1.pack()
button2.pack()
button3.pack()
button4.pack()
button5.pack()
label1.place(x=30, y=30)
label2.place(x=30, y=60)
label3.place(x=30, y=90)
text1.place(x=150, y=30)
text2.place(x=150, y=60)
text3.place(x=150, y=90)
button1.place(x=450, y=26)
button4.place(x=450, y=56)
button5.place(x=450, y=86)
button2.place(x=160, y=150)
button3.place(x=260, y=150)
root.mainloop()
if __name__ == "__main__":
main()
这个文件需要读取TXT格式的名单,如果需要用xlsx的文件需要安装一个文件然后稍微改一下程序,如果有同学要用直接拿走吧,我当时懒得下载了就没用,而且这样复用性我觉得可能更好。嘻嘻嘻。
|