python写的本地搜索小工具
给一个不太懂电脑但会编辑管理很多文件的老总写的工具程序,查找几天前编辑的文件并导入到一个csv文件中。其中碰到的困难主要是界面布置和中文支持。但现在算是通过。支持中文windows xp的文件名和路径,其他平台没有测试。
并用py2exe生成了exe文件发布。
工具界面:
[*]#coding=utf-8
[*]#smallsearchtoolbytkinter
[*]#testplatform:WindowsXPChinese
[*]#version0.5
[*]#file name: find.py
[*]#author:zhouhh
[*]#date:2008.12.16
[*]#email:ablozhou#gmail.com
[*]#note:tosearchfilesmodifiedafewdaysago
[*]#debugtool:PythonWin
[*]#pythonversion:2.5.2
[*]
[*]importos;
[*]importtime;
[*]fromTkinterimport*
[*]
[*]classcapp:
[*]'''''对输入的路径和文件后缀以及编辑的天数进行搜索,并在输入路径下生成一个csv结果文件。'''
[*]def__init__(self,master):
[*]'''''filesearchtool0.5byzhouhaihan@cvtt.cn周海汉'''
[*]frame1=Frame(master)
[*]frame1.pack()
[*]self.quest=Label(frame1,bitmap='questhead')
[*]self.quest.pack(side=LEFT)
[*]#self.button=Button(frame,text='Quit',fg='red',command=frame.quit)
[*]#self.button.pack(side=LEFT)
[*]self.dirlable=Label(frame1,text=unicode('输入搜索路径:','gbk'),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()
[*]self.lblext=Label(frame,text=unicode('文件后缀名:','gbk'),font=('songti',9))
[*]self.lblext.pack(side=LEFT)
[*]
[*]self.ext=Entry(frame,width=15)
[*]self.ext.pack(side=LEFT)
[*]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('修改时间(几天前):','gbk'),font=('songti',9))
[*]self.daylable.pack(side=LEFT)
[*]self.days=Entry(frame,width=15)
[*]self.days.pack(side=LEFT)
[*]self.daystr=StringVar()
[*]self.daystr.set('1')
[*]self.days['textvariable']=self.daystr
[*]self.hello=Button(frame,text=unicode('查找','gbk'),font=('songti',12,'bold'),fg='red',bg='white',height=2,width=8,command=self.sayhi)
[*]self.hello.pack(side=LEFT)
[*]
[*]frame3=Frame(master)
[*]frame3.pack()
[*]self.msg=Label(frame3,text=unicode('','gbk'))
[*]self.msg.pack(side=LEFT)
[*]
[*]defsayhi(self):
[*]print'begining...'
[*]self.msg.config(text='...')
[*]try:
[*]mydir=self.contents.get()
[*]mydays=self.daystr.get()
[*]myext=self.extstr.get()
[*]file1=open(os.path.join(mydir,'result.csv'),'a+')
[*]searchinfo='\nsearch'+myext+'in'+mydays+'days.seachtime:'+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()
[*]self.msg.config(text=unicode('搜索成功!','gbk'),font=('songti',9))
[*]exceptIOError,(errno,strerror):
[*]print'IOerror%s:%s'%(errno,strerror)
[*]self.msg.config(text='IOerror%s:%s'%(errno,strerror))
[*]except:
[*]print"Unexpectederror:",sys.exc_info()
[*]self.msg.config(text='error'+str(sys.exc_info()))
[*]file1.close()
[*]raise
[*]
[*]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=unicode(status,'gbk'),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=unicode(status,'gbk'),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.5-周海汉2008.12.16",'gbk'))
[*]app=capp(root)
[*]root.mainloop()
[*]
[*]
py2exe 的setup.py
[*]#setup.py
[*]fromdistutils.coreimportsetup
[*]importpy2exe
[*]setup(console=["find.py"])
执行,在命令行下输入:
[*]pythonsetup.pypy2exe
页:
[1]