设为首页 收藏本站
查看: 879|回复: 0

[经验分享] python写的本地搜索小工具

[复制链接]

尚未签到

发表于 2017-5-4 11:33:32 | 显示全部楼层 |阅读模式
  给一个不太懂电脑但会编辑管理很多文件的老总写的工具程序,查找几天前编辑的文件并导入到一个csv文件中。
  其中碰到的困难主要是界面布置和中文支持。但现在算是通过。支持中文windows xp的文件名和路径,其他平台没有测试。
  并用py2exe生成了exe文件发布。
  工具界面:
   DSC0000.png

  • #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()[0]
  • self.msg.config(text='error'+str(sys.exc_info()[0]))
  • file1.close()
  • raise

  • 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=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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-372973-1-1.html 上篇帖子: python轻松去除 list 重复元素 下篇帖子: 生成源码字典的python脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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