python写的本地搜索小工具0.9

  1. #coding=utf-8
  2. #smallsearchtoolbytkinter
  3. #testplatform:WindowsXPChinese
  4. #version0.9
  5. #author:zhouhh
  6. #filename:find.py
  7. #date:2008.12.16
  8. #email:ablozhou#gmail.com
  9. #note:tosearchfilesmodifiedafewdaysago
  10. #debugtool:PythonWin
  11. #pythonversion:2.5.2
  12. #py2exe:
  13. #createasetup.py:
  14. ###########################
  15. ##setup.py
  16. #fromdistutils.coreimportsetup
  17. #importpy2exe
  18. #setup(console=["find.py"])
  19. #
  20. ##########################
  21. #runingcmd:pythonsetup.pypy2exe
  22. importos;
  23. importtime;
  24. fromTkinterimport*
  25. classcapp:
  26. '''''对输入的路径和文件后缀以及编辑的天数进行搜索,并在输入路径下生成一个csv结果文件。'''
  27. def__init__(self,master):
  28. '''''filesearchtool0.9byzhouhaihan@cvtt.cn周海汉'''
  29. frame1=Frame(master)
  30. frame1.pack(padx=5)
  31. self.quest=Label(frame1,bitmap='questhead')
  32. self.quest.pack(side=LEFT)
  33. self.dirlable=Label(frame1,text=unicode('输入搜索路径:','utf8'),font=('songti',9))
  34. self.dirlable.pack(side=LEFT)
  35. self.entry=Entry(frame1,font=('songti',9),width=65)
  36. self.entry.pack(side=LEFT)
  37. frame=Frame(master)
  38. frame.pack(pady=5)
  39. self.lblext=Label(frame,text=unicode('文件后缀名:','utf8'),font=('songti',9))
  40. self.lblext.pack(side=LEFT)
  41. self.ext=Entry(frame,width=15)
  42. self.ext.pack(side=LEFT,padx=5)
  43. self.extstr=StringVar()
  44. self.extstr.set(u'*.xls')
  45. self.ext['textvariable']=self.extstr
  46. self.contents=StringVar()
  47. self.contents.set(u'')
  48. self.entry['textvariable']=self.contents
  49. self.daylable=Label(frame,text=unicode('修改时间(几天前):','utf8'),font=('songti',9))
  50. self.daylable.pack(side=LEFT)
  51. self.days=Entry(frame,width=20)
  52. self.days.pack(side=LEFT,padx=5)
  53. self.daystr=StringVar()
  54. self.daystr.set('1')
  55. self.days['textvariable']=self.daystr
  56. frame2=Frame(master)
  57. frame2.pack(pady=5)
  58. self.resultlabel=Label(frame2,text=unicode('结果保存路径','utf8'),font=('songti',9))
  59. self.resultlabel.pack(side=LEFT,padx=8)
  60. self.resultfilestr=StringVar()
  61. self.resultfile=Entry(frame2,font=('songti',9),width=40)
  62. self.resultfile.pack(side=LEFT)
  63. self.resultfile['textvariable']=self.resultfilestr
  64. self.resultfilestr.set(u'')
  65. self.hello=Button(frame2,text=unicode('查找','utf8'),font=('songti',12,'bold'),fg='red',height=1,width=8,command=self.sayhi)
  66. self.hello.bind('<Enter>',self.rolloverEnter)
  67. self.hello.bind('<Leave>',self.rolloverLeave)
  68. self.hello.pack(side=LEFT,padx=5)
  69. #self.button=Button(frame2,text=unicode('退出','utf8'),font=('songti',12),height=1,command=master.quit)
  70. #self.button.bind('<Enter>',self.rolloverEnter)
  71. #self.button.bind('<Leave>',self.rolloverLeave)
  72. #self.button.pack(side=LEFT,padx=5)
  73. frame3=Frame(master)
  74. frame3.pack(pady=5)
  75. self.msg=Label(frame3,text=unicode('','utf8'))
  76. self.msg.pack(side=LEFT)
  77. defsayhi(self):
  78. print'begining...'
  79. self.msg.config(text='...')
  80. try:
  81. mydir=self.contents.get()
  82. iflen(mydir)<=0:
  83. mydir=os.getcwd()
  84. self.contents.set(unicode(mydir,'utf8'))
  85. os.chdir(mydir)
  86. resultdir=self.resultfilestr.get()
  87. iflen(resultdir)<=0:
  88. resultdir=mydir
  89. self.resultfilestr.set(resultdir)
  90. mydays=self.daystr.get()
  91. myext=self.extstr.get()
  92. file1=open(os.path.join(resultdir,'result.csv'),'a+')
  93. searchinfo='\nsearch'+myext+'in'+mydays+'days.Time:'+time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time()))+'\n'
  94. file1.write(searchinfo)
  95. file1.write('Filename,Modifytime,Size(bytes),Directory\n')
  96. self.listfile(mydir,file1,mydays,myext)
  97. file1.close()
  98. os.chdir(mydir)#changepathtothebeginingpath
  99. self.msg.config(text=unicode('搜索成功!请查看'+os.path.join(resultdir.encode('utf8'),'result.csv'),'utf8'),font=('songti',9))
  100. exceptIOError,(errno,strerror):
  101. print'IOerror%s:%s'%(errno,strerror)
  102. self.msg.config(text='IOerror%s:%s'%(errno,strerror))
  103. os.chdir(mydir)
  104. except:
  105. print"Unexpectederror:",sys.exc_info()[0]
  106. self.msg.config(text='error'+str(sys.exc_info()[0]))
  107. file1.close()
  108. os.chdir(mydir)
  109. raise
  110. #defpressedPlain(self):
  111. #showinfo("Message","YoupressedPlainButton")
  112. defrolloverEnter(self,event):
  113. event.widget.config(relief=GROOVE)
  114. defrolloverLeave(self,event):
  115. event.widget.config(relief=RAISED)
  116. deflistfile(self,dirname,file1,days,ext):
  117. '''''searchfiles...'''
  118. iflen(ext)>0:
  119. ext=os.path.splitext(ext)[1]
  120. iflen(dirname)>0:
  121. os.chdir(dirname)
  122. dirname=os.getcwd()
  123. print'['+dirname+']:'
  124. names=os.listdir(dirname)
  125. dirs=[]
  126. forfilenameinnames:
  127. fullname=os.path.join(dirname,filename)
  128. ifos.path.isdir(fullname):
  129. dirs.append(fullname)
  130. continue
  131. iflen(ext)>0:
  132. ifos.path.splitext(filename)[1]!=ext:
  133. status='ignore'+filename+'forextension'
  134. printstatus
  135. self.msg.config(text=status,font=('songti',9))
  136. continue;
  137. t=os.path.getmtime(fullname)
  138. tnow=time.time()
  139. #printfullname,'ignore',tnow,t,tnow-t,86400*int(days)
  140. iflen(days)>0:
  141. if((tnow-t)>86400*int(days)):
  142. status='ignore'+filename+'fordate'
  143. printstatus
  144. self.msg.config(text=status,font=('songti',9))
  145. continue;
  146. mt=time.localtime(t)
  147. size=os.path.getsize(fullname)
  148. fileinfo=filename+','+time.strftime('%Y-%m-%d%H:%M:%S',mt)+','+str(size)+','+dirname+'\n'
  149. printfileinfo
  150. file1.write(fileinfo)
  151. fordirnameindirs:
  152. self.listfile(dirname,file1,days,ext)
  153. if__name__=='__main__':
  154. #reload(sys)
  155. #sys.setdefaultencoding('utf8')
  156. root=Tk()
  157. root.title(unicode("搜索工具-0.9-周海汉2008.12.17",'utf8'))
  158. app=capp(root)
  159. root.mainloop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值