鄂破机看 发表于 2017-5-7 10:41:32

python写的本地搜索小工具0.9


[*]#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()
[*]self.msg.config(text='error'+str(sys.exc_info()))
[*]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)
[*]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)!=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()
[*]
[*]
[*]
页: [1]
查看完整版本: python写的本地搜索小工具0.9