|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我有一个tkinter程序,想通过pyinstaller 编译成exe执行程序,开始已经成功了,后来我再编写,告诉我 failed to execute script answer 原因是没有numpy.random.common 模块,可是我重新安装模块也还是没有。但是之前运行成功过啊,求大神帮忙。 我想要32位的。14794429947 拜谢
- #!/usr/bin/python
- # -- coding: utf-8 --
- import fnmatch #选择文件的关键词
- import os
- from time import sleep
- from tkinter import *
- import tkinter.filedialog #弹出选择路径的库
- import tkinter.messagebox
- import fnmatch #选择文件的关键词
- import re
- import pandas as pd
- import docx
- import pickle
- import codecs
- import string
- import shutil
- from win32com import client as wc
- def matchdocname(str1,root,i,list_box):
- if str1 in os.path.splitext(i)[0]:
- list_box.insert(END, root+"/"+i)
- def matchdoccontent(str1,root,i,list_box):
- if i.endswith('txt'): #当文件为txt时
- with open(os.path.join(root, i) ,'r') as fp:
- errors=''
- aa=fp.read()
- if str1 in aa :
- list_box.insert(END, root+"/"+i)
- if i.endswith('xls') or i.endswith('xlsx') : #当文件为excel时
- df=pd.read_excel(os.path.join(root, i))
- df=df.values
- for k in df:
- for j in k:
- j=str(j)
- if str1 in j:
- list_box.insert(END, root+"/"+i)
- if i.endswith('docx'): #当文件为.docx时
- word = wc.Dispatch('Word.Application')
- doc = word.Documents.Open(os.path.join(root, i))
- newname=os.path.join(root, i)+"(translate txt)"
- doc.SaveAs(newname,4)
- doc.Close()
- word.Quit()
- with open(newname ,'r') as fp:
- errors=''
- aa=fp.read()
- if str1 in aa :
- list_box.insert(END, root+"/"+i)
- os.remove(newname)
- if i.endswith('doc'): #当文件为.doc时
- word = wc.Dispatch('Word.Application')
- doc = word.Documents.Open(os.path.join(root, i))
- newname=os.path.join(root, i)+"(translate txt)"
- doc.SaveAs(newname,4)
- doc.Close()
- word.Quit()
- with open(newname ,'r') as fp:
- errors=''
- aa=fp.read()
- if str1 in aa :
- list_box.insert(END, root+"/"+i)
- os.remove(newname) #删掉这个临时文件
-
- def left():
- if not entry.get() :#检测关键词输入框是否为空
- tkinter.messagebox.showerror("提示信息:","出现以下错误:\n关键词不能为空")#弹出警告框
- return #如果为空不再执行
- if var1.get()==0 and var2.get()==0 :
- tkinter.messagebox.showerror("提示信息:","出现以下错误:\n匹配项不能为空")#弹出警告框
- return #如果为空不再执行
- list_box.delete(0,END)
- path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径
- path_list = os.walk(path)#获取一个列表目录的对象
- for root, dirs, files in path_list:
- #print root, dirs, files
- if var1.get()==1 and var2.get()==0: #当只匹配文件名时
- list_box.insert(END, '文件名')
- for i in files:
- matchdocname(entry.get(),root,i,list_box)
- elif var1.get()==0 and var2.get()==1: #当只匹配文件内容时
- list_box.insert(END, '文件内容')
- for i in files:
- matchdoccontent(entry.get(),root,i,list_box)
- elif var1.get()==1 and var2.get()==1: #当既匹配文件名又匹配文件内容时
- list_box.insert(END, '文件名')
- for i in files:
- matchdocname(entry.get(),root,i,list_box)
- list_box.insert(END, '--------------')
- list_box.insert(END, '文件内容')
- for i in files:
- matchdoccontent(entry.get(),root,i,list_box)
- def func2(e):
- if not list_box.curselection():#取双击的坐标52
- return
- path = list_box.get(list_box.curselection(),last=None)
- os.startfile(path)
- def nagea(e):
- error = ''
- tdir = dirs.get(dirs.curselection())
- if os.path.isfile(tdir): #如果是文件 则打开
- os.startfile(tdir)
- elif os.path.isdir(tdir): #如果是文件夹 则调用dols
- setDirAndGo()
- def wenjianshu():
- dirs.delete(0,END)
- path = tkinter.filedialog.askdirectory()#弹出选择路径的窗口,path为获取的路径
- doLS1(path)
- #双击时调用,双击时,设置背景色为红色,并调用doLS函数打开所选文件
- def setDirAndGo(ev=None):
- last = cwd.get()
- dirs.config(selectbackground='red')
- check = dirs.get(dirs.curselection())
- if not check:
- check = os.curdir
- cwd.set(check)
- doLS()
- #实现更新目录的核心函数
- def doLS(ev=None):
- error = ''
- tdir = cwd.get()
- if not tdir:tdir=os.curdir
- #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息
- if not os.path.exists(tdir):
- error = os.getcwd()+'\\'+tdir + ':未找到文件'
- elif not os.path.isdir(tdir):
- error = os.getcwd()+'\\'+tdir + ':未找到目录'
- if error:
- cwd.set(error)
- top2.update()
- sleep(1)
- cwd.set(os.curdir)
- dirs.config(selectbackground='LightSkyBlue')
- top2.update()
- return
- cwd.set(os.getcwd()+'\\'+tdir)
- top2.update()
- dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
- dirlist.sort()
- os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。
- #更新界面上方标签内容
- dirl.config(text=os.getcwd())
- top2.update()
- dirs.delete(0,END)
- dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中
- #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中
- for eachFile in dirlist:
- dirs.insert(END,eachFile)
- cwd.set(os.curdir)
- dirs.config(selectbackground='LightSkyBlue')
- def doLS1(tdir):
- error = ''
- if not tdir:tdir=os.curdir
- #若路径输入错误,或者打开的是文件,而不是目录,则更新错误提示信息
- if not os.path.exists(tdir):
- error = os.getcwd()+'\\'+tdir + ':未找到文件'
- elif not os.path.isdir(tdir):
- error = os.getcwd()+'\\'+tdir + ':未找到目录'
- if error:
- cwd.set(error)
- top2.update()
- sleep(1)
- cwd.set(os.curdir)
- dirs.config(selectbackground='LightSkyBlue')
- top2.update()
- return
- cwd.set(os.getcwd()+'\\'+tdir)
- top2.update()
- dirlist = os.listdir(tdir)#os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
- dirlist.sort
- os.chdir(tdir)#os.chdir() 方法用于改变当前工作目录到指定的路径。
- #更新界面上方标签内容
- dirl.config(text=os.getcwd())
- top2.update()
- dirs.delete(0,END)
- dirs.insert(END,os.pardir)#os.chdir(os.pardir) 切换到上级目录 即将上级目录.. 插入到dirs对象中
- #把选定目录的文件或文件夹的名字的列表依次插入到dirs对象中
- for eachFile in dirlist:
- dirs.insert(END,eachFile)
- cwd.set(os.curdir)
- dirs.config(selectbackground='LightSkyBlue')
- top2 = Tk()
- top2.title('营销集约管控中心-文件管理')
- top2.geometry('+50+50')#窗口大小,窗口位置
- cwd = StringVar(top2)
- var=IntVar()
- dirl = Label(top2,fg = 'BLUE',font = ('Helvetica',18,'bold'))
- dirl.pack()
- dirfm = Frame(top2)
- dirs = Listbox(dirfm,height=25,width=90)
- #通过使用List的bind()方法,将鼠标双击事件绑定,并调用setDirAndGo函数
- dirs.bind('<Double-1>',nagea)
- dirs.pack(side=LEFT,fill=BOTH)
- list_box = Listbox(dirfm,height=25,width=90)
- list_box.bind('<Double-Button-1>',func2) #绑定一个双击触发事件
- list_box.pack(side=LEFT,fill=BOTH)#显示列表框
- dirfm.pack()
- #第二个框架bfm,放置按钮
- bfm = Frame(top2)
- open1 = Button(bfm,text='文件树',command=wenjianshu,activeforeground='white',activebackground='blue')
- open1.pack(side=LEFT)
- bfm.pack(side=LEFT,fill=BOTH)
- #多选框插件
- var1 = tkinter.IntVar() # 用来储存下面勾选项1中返回的0或1
- var2 = tkinter.IntVar() # 用来储存下面勾选项2中返回的0或1
- button2=tkinter.Checkbutton(top2,text="匹配文件内容",variable=var2,onvalue=1,offvalue=0)
- button2.pack(side=RIGHT,fill=BOTH)
- button1=tkinter.Checkbutton(top2,text="匹配文件名",variable=var1,onvalue=1,offvalue=0)
- button1.pack(side=RIGHT,fill=BOTH)
- #按钮控件
- entry = Entry()#输入框实例化
- entry.pack(side=RIGHT,fill=BOTH)#输入框
- button2=Button(top2,text="关键字",command=left)
- button2.pack(side=RIGHT,fill=BOTH)
- if __name__ =='__main__':
- #设定初始目录为桌面
- mainloop()
复制代码 |
|