六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 50|回复: 0

python写的本地搜索小工具0.9

[复制链接]

升级  47.35%

633

主题

633

主题

633

主题

探花

Rank: 6Rank: 6

积分
1947
 楼主| 发表于 2013-1-15 01:57:14 | 显示全部楼层 |阅读模式
<div class="highlighter">

  • #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()



您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表