python写的本地搜索小工具0.9
来源:互联网 发布:换一个淘宝账号开开店 编辑:程序博客网 时间:2024/05/17 04:54
- import os;
- import time;
- from Tkinter import *
- class capp:
- ''
- def __init__(self,master):
- ''
- 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)
-
-
-
-
- frame3 = Frame(master)
- frame3.pack(pady=5)
- self.msg = Label(frame3,text=unicode('','utf8'))
- self.msg.pack(side=LEFT)
-
- def sayhi(self):
- print 'begining ... '
- self.msg.config(text='...')
- try:
- mydir = self.contents.get()
- if len(mydir) <= 0:
- mydir = os.getcwd()
- self.contents.set(unicode(mydir,'utf8'))
- os.chdir(mydir)
- resultdir = self.resultfilestr.get()
- if len(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('File name, Modify time, Size (bytes), Directory/n')
- self.listfile(mydir,file1,mydays,myext)
- file1.close()
- os.chdir(mydir)
- self.msg.config(text=unicode('搜索成功!请查看'+os.path.join(resultdir.encode('utf8'),'result.csv'),'utf8'),font=('songti',9))
- except IOError,(errno,strerror):
- print 'IO error %s: %s' % (errno,strerror)
- self.msg.config(text = 'IO error %s: %s' % (errno,strerror))
- os.chdir(mydir)
- except:
- print "Unexpected error:", sys.exc_info()[0]
- self.msg.config(text='error '+str(sys.exc_info()[0]))
- file1.close()
- os.chdir(mydir)
- raise
-
-
- def rolloverEnter(self,event):
- event.widget.config(relief=GROOVE)
- def rolloverLeave(self,event):
- event.widget.config(relief=RAISED)
-
- def listfile(self,dirname,file1,days,ext):
- ''
- if len(ext) >0 :
- ext = os.path.splitext(ext)[1]
- if len(dirname) > 0:
- os.chdir(dirname)
- dirname = os.getcwd()
- print '['+dirname+']:'
- names = os.listdir(dirname)
-
- dirs=[]
- for filename in names:
- fullname = os.path.join(dirname,filename)
- if os.path.isdir(fullname):
- dirs.append(fullname)
- continue
- if len(ext) > 0:
- if os.path.splitext(filename)[1]!=ext :
- status = 'ignore '+filename+' for extension'
- print status
- self.msg.config(text=status,font=('songti',9))
- continue;
-
- t = os.path.getmtime(fullname)
- tnow = time.time()
-
- if len(days) > 0 :
- if( (tnow -t) > 86400*int(days)):
- status = 'ignore '+filename+' for date'
- print status
- 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'
- print fileinfo
- file1.write(fileinfo)
-
- for dirname in dirs:
- self.listfile(dirname,file1,days,ext)
-
- if __name__=='__main__':
-
-
- root = Tk()
- root.title(unicode("搜索工具-0.9- 周海汉 2008.12.17",'utf8'))
- app = capp(root)
- root.mainloop()
-
-