- #coding=utf-8
- #smallsearchtoolbytkinter
- #testplatform:WindowsXPChinese
- #version0.9
- #author:zhouhh
- #filename:find.py
- #date:2008.12.16
- #email:ablozhou#gmail.com
- #note:tosearchfilesmodifiedafewdaysago
- #debugtool:PythonWin
- #pythonversion:2.5.2
- #py2exe:
- #createasetup.py:
- ###########################
- ##setup.py
- #fromdistutils.coreimportsetup
- #importpy2exe
- #setup(console=["find.py"])
- #
- ##########################
- #runingcmd:pythonsetup.pypy2exe
- importos;
- importtime;
- fromTkinterimport*
- classcapp:
- '''''对输入的路径和文件后缀以及编辑的天数进行搜索,并在输入路径下生成一个csv结果文件。'''
- def__init__(self,master):
- '''''filesearchtool0.9byzhouhaihan@cvtt.cn周海汉'''
- frame1=Frame(master)
- frame1.pack(padx=5)
- self.quest=Label(frame1,bitmap='questhead')
- self.quest.pack(side=LEFT)
- self.dirlable=Label(frame1,text=unicode('输入搜索路径:','utf8'),font=('songti',9))
- self.dirlable.pack(side=LEFT)
- self.entry=Entry(frame1,font=('songti',9),width=65)
- self.entry.pack(side=LEFT)
- frame=Frame(master)
- frame.pack(pady=5)
- self.lblext=Label(frame,text=unicode('文件后缀名:','utf8'),font=('songti',9))
- self.lblext.pack(side=LEFT)
- self.ext=Entry(frame,width=15)
- self.ext.pack(side=LEFT,padx=5)
- self.extstr=StringVar()
- self.extstr.set(u'*.xls')
- self.ext['textvariable']=self.extstr
- self.contents=StringVar()
- self.contents.set(u'')
- self.entry['textvariable']=self.contents
- self.daylable=Label(frame,text=unicode('修改时间(几天前):','utf8'),font=('songti',9))
- self.daylable.pack(side=LEFT)
- self.days=Entry(frame,width=20)
- self.days.pack(side=LEFT,padx=5)
- self.daystr=StringVar()
- self.daystr.set('1')
- self.days['textvariable']=self.daystr
- frame2=Frame(master)
- frame2.pack(pady=5)
- self.resultlabel=Label(frame2,text=unicode('结果保存路径','utf8'),font=('songti',9))
- self.resultlabel.pack(side=LEFT,padx=8)
- self.resultfilestr=StringVar()
- self.resultfile=Entry(frame2,font=('songti',9),width=40)
- self.resultfile.pack(side=LEFT)
- self.resultfile['textvariable']=self.resultfilestr
- self.resultfilestr.set(u'')
- self.hello=Button(frame2,text=unicode('查找','utf8'),font=('songti',12,'bold'),fg='red',height=1,width=8,command=self.sayhi)
- self.hello.bind('<Enter>',self.rolloverEnter)
- self.hello.bind('<Leave>',self.rolloverLeave)
- self.hello.pack(side=LEFT,padx=5)
- #self.button=Button(frame2,text=unicode('退出','utf8'),font=('songti',12),height=1,command=master.quit)
- #self.button.bind('<Enter>',self.rolloverEnter)
- #self.button.bind('<Leave>',self.rolloverLeave)
- #self.button.pack(side=LEFT,padx=5)
- frame3=Frame(master)
- frame3.pack(pady=5)
- self.msg=Label(frame3,text=unicode('','utf8'))
- self.msg.pack(side=LEFT)
- defsayhi(self):
- print'begining...'
- self.msg.config(text='...')
- try:
- mydir=self.contents.get()
- iflen(mydir)<=0:
- mydir=os.getcwd()
- self.contents.set(unicode(mydir,'utf8'))
- os.chdir(mydir)
- resultdir=self.resultfilestr.get()
- iflen(resultdir)<=0:
- resultdir=mydir
- self.resultfilestr.set(resultdir)
- mydays=self.daystr.get()
- myext=self.extstr.get()
- file1=open(os.path.join(resultdir,'result.csv'),'a+')
- searchinfo='\nsearch'+myext+'in'+mydays+'days.Time:'+time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time()))+'\n'
- file1.write(searchinfo)
- file1.write('Filename,Modifytime,Size(bytes),Directory\n')
- self.listfile(mydir,file1,mydays,myext)
- file1.close()
- os.chdir(mydir)#changepathtothebeginingpath
- self.msg.config(text=unicode('搜索成功!请查看'+os.path.join(resultdir.encode('utf8'),'result.csv'),'utf8'),font=('songti',9))
- exceptIOError,(errno,strerror):
- print'IOerror%s:%s'%(errno,strerror)
- self.msg.config(text='IOerror%s:%s'%(errno,strerror))
- os.chdir(mydir)
- except:
- print"Unexpectederror:",sys.exc_info()[0]
- self.msg.config(text='error'+str(sys.exc_info()[0]))
- file1.close()
- os.chdir(mydir)
- raise
- #defpressedPlain(self):
- #showinfo("Message","YoupressedPlainButton")
- defrolloverEnter(self,event):
- event.widget.config(relief=GROOVE)
- defrolloverLeave(self,event):
- event.widget.config(relief=RAISED)
- deflistfile(self,dirname,file1,days,ext):
- '''''searchfiles...'''
- iflen(ext)>0:
- ext=os.path.splitext(ext)[1]
- iflen(dirname)>0:
- os.chdir(dirname)
- dirname=os.getcwd()
- print'['+dirname+']:'
- names=os.listdir(dirname)
- dirs=[]
- forfilenameinnames:
- fullname=os.path.join(dirname,filename)
- ifos.path.isdir(fullname):
- dirs.append(fullname)
- continue
- iflen(ext)>0:
- ifos.path.splitext(filename)[1]!=ext:
- status='ignore'+filename+'forextension'
- printstatus
- self.msg.config(text=status,font=('songti',9))
- continue;
- t=os.path.getmtime(fullname)
- tnow=time.time()
- #printfullname,'ignore',tnow,t,tnow-t,86400*int(days)
- iflen(days)>0:
- if((tnow-t)>86400*int(days)):
- status='ignore'+filename+'fordate'
- printstatus
- self.msg.config(text=status,font=('songti',9))
- continue;
- mt=time.localtime(t)
- size=os.path.getsize(fullname)
- fileinfo=filename+','+time.strftime('%Y-%m-%d%H:%M:%S',mt)+','+str(size)+','+dirname+'\n'
- printfileinfo
- file1.write(fileinfo)
- fordirnameindirs:
- self.listfile(dirname,file1,days,ext)
- if__name__=='__main__':
- #reload(sys)
- #sys.setdefaultencoding('utf8')
- root=Tk()
- root.title(unicode("搜索工具-0.9-周海汉2008.12.17",'utf8'))
- app=capp(root)
- root.mainloop()
python写的本地搜索小工具0.9
最新推荐文章于 2020-11-17 19:14:06 发布