python写的本地搜索小工具

给一个不太懂电脑但会编辑管理很多文件的老总写的工具程序,查找几天前编辑的文件并导入到一个csv文件中。

其中碰到的困难主要是界面布置和中文支持。但现在算是通过。支持中文windows xp的文件名和路径,其他平台没有测试。

并用py2exe生成了exe文件发布。

工具界面:

  1. #coding=utf-8
  2. #smallsearchtoolbytkinter
  3. #testplatform:WindowsXPChinese
  4. #version0.5
  5. #file name: find.py
  6. #author:zhouhh
  7. #date:2008.12.16
  8. #email:ablozhou#gmail.com
  9. #note:tosearchfilesmodifiedafewdaysago
  10. #debugtool:PythonWin
  11. #pythonversion:2.5.2
  12. importos;
  13. importtime;
  14. fromTkinterimport*
  15. classcapp:
  16. '''''对输入的路径和文件后缀以及编辑的天数进行搜索,并在输入路径下生成一个csv结果文件。'''
  17. def__init__(self,master):
  18. '''''filesearchtool0.5byzhouhaihan@cvtt.cn周海汉'''
  19. frame1=Frame(master)
  20. frame1.pack()
  21. self.quest=Label(frame1,bitmap='questhead')
  22. self.quest.pack(side=LEFT)
  23. #self.button=Button(frame,text='Quit',fg='red',command=frame.quit)
  24. #self.button.pack(side=LEFT)
  25. self.dirlable=Label(frame1,text=unicode('输入搜索路径:','gbk'),font=('songti',9))
  26. self.dirlable.pack(side=LEFT)
  27. self.entry=Entry(frame1,font=('songti',9),width=65)
  28. self.entry.pack(side=LEFT)
  29. frame=Frame(master)
  30. frame.pack()
  31. self.lblext=Label(frame,text=unicode('文件后缀名:','gbk'),font=('songti',9))
  32. self.lblext.pack(side=LEFT)
  33. self.ext=Entry(frame,width=15)
  34. self.ext.pack(side=LEFT)
  35. self.extstr=StringVar()
  36. self.extstr.set(u'*.xls')
  37. self.ext['textvariable']=self.extstr
  38. self.contents=StringVar()
  39. self.contents.set(u'')
  40. self.entry['textvariable']=self.contents
  41. self.daylable=Label(frame,text=unicode('修改时间(几天前):','gbk'),font=('songti',9))
  42. self.daylable.pack(side=LEFT)
  43. self.days=Entry(frame,width=15)
  44. self.days.pack(side=LEFT)
  45. self.daystr=StringVar()
  46. self.daystr.set('1')
  47. self.days['textvariable']=self.daystr
  48. self.hello=Button(frame,text=unicode('查找','gbk'),font=('songti',12,'bold'),fg='red',bg='white',height=2,width=8,command=self.sayhi)
  49. self.hello.pack(side=LEFT)
  50. frame3=Frame(master)
  51. frame3.pack()
  52. self.msg=Label(frame3,text=unicode('','gbk'))
  53. self.msg.pack(side=LEFT)
  54. defsayhi(self):
  55. print'begining...'
  56. self.msg.config(text='...')
  57. try:
  58. mydir=self.contents.get()
  59. mydays=self.daystr.get()
  60. myext=self.extstr.get()
  61. file1=open(os.path.join(mydir,'result.csv'),'a+')
  62. searchinfo='\nsearch'+myext+'in'+mydays+'days.seachtime:'+time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time()))+'\n'
  63. file1.write(searchinfo)
  64. file1.write('Filename,Modifytime,Size(bytes),Directory\n')
  65. self.listfile(mydir,file1,mydays,myext)
  66. file1.close()
  67. self.msg.config(text=unicode('搜索成功!','gbk'),font=('songti',9))
  68. exceptIOError,(errno,strerror):
  69. print'IOerror%s:%s'%(errno,strerror)
  70. self.msg.config(text='IOerror%s:%s'%(errno,strerror))
  71. except:
  72. print"Unexpectederror:",sys.exc_info()[0]
  73. self.msg.config(text='error'+str(sys.exc_info()[0]))
  74. file1.close()
  75. raise
  76. deflistfile(self,dirname,file1,days,ext):
  77. '''''searchfiles...'''
  78. iflen(ext)>0:
  79. ext=os.path.splitext(ext)[1]
  80. iflen(dirname)>0:
  81. os.chdir(dirname)
  82. dirname=os.getcwd()
  83. print'['+dirname+']:'
  84. names=os.listdir(dirname)
  85. dirs=[]
  86. forfilenameinnames:
  87. fullname=os.path.join(dirname,filename)
  88. ifos.path.isdir(fullname):
  89. dirs.append(fullname)
  90. continue
  91. iflen(ext)>0:
  92. ifos.path.splitext(filename)[1]!=ext:
  93. status='ignore'+filename+'forextension'
  94. printstatus
  95. self.msg.config(text=unicode(status,'gbk'),font=('songti',9))
  96. continue;
  97. t=os.path.getmtime(fullname)
  98. tnow=time.time()
  99. #printfullname,'ignore',tnow,t,tnow-t,86400*int(days)
  100. iflen(days)>0:
  101. if((tnow-t)>86400*int(days)):
  102. status='ignore'+filename+'fordate'
  103. printstatus
  104. self.msg.config(text=unicode(status,'gbk'),font=('songti',9))
  105. continue;
  106. mt=time.localtime(t)
  107. size=os.path.getsize(fullname)
  108. fileinfo=filename+','+time.strftime('%Y-%m-%d%H:%M:%S',mt)+','+str(size)+','+dirname+'\n'
  109. printfileinfo
  110. file1.write(fileinfo)
  111. fordirnameindirs:
  112. self.listfile(dirname,file1,days,ext)
  113. if__name__=='__main__':
  114. #reload(sys)
  115. #sys.setdefaultencoding('utf8')
  116. root=Tk()
  117. root.title(unicode("搜索工具-0.5-周海汉2008.12.16",'gbk'))
  118. app=capp(root)
  119. root.mainloop()

py2exe 的setup.py

  1. #setup.py
  2. fromdistutils.coreimportsetup
  3. importpy2exe
  4. setup(console=["find.py"])

执行,在命令行下输入:

  1. pythonsetup.pypy2exe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值