|
# -*- coding: cp936 -*- '''文件信息查看器,可以显示文件的路径,大小,创建日期,最后修改日期,最后访问日期''' gCurrentDir = '' from Tkinter import * import os root = Tk()
Label(root,text = 'File operation demo').grid(row = 0,column = 0,columnspan = 3) Label(root,text = 'Directories').grid(row = 1,column = 0,stick = W) Label(root,text = 'File').grid(row = 1,column = 1,stick = W) Label(root,text = 'File Properities').grid(row = 1,column = 2,stick = W)
# 得到当前目录位置 gCurrentDir = os.getcwd()
def refreshDirs(lbDirs_,curDir): '''更新目录列表 1.删除所有记录 2.插入当前目录列表 3.选中第一项 ''' lbDirs_.delete(0,END) lbDirs_.insert(0,'.') lbDirs_.insert(1,'..') for item in (os.listdir(curDir)): if os.path.isdir(curDir +(os.sep) + item): lbDirs_.insert(END,item) lbDirs_.selection_set(0) def refreshFiles(lbFiles_,curDir): '''更新文件列表 1.删除所有记录 2.插入当前目录的文件列表 3.选中第一项 ''' lbFiles_.delete(0,END) for item in (os.listdir(curDir)): if os.path.isfile(curDir +(os.sep) + item): lbFiles_.insert(END,item) lbFiles_.selection_set(0) def changeDir(event): '''在目录ListBux双击时, 1.改变当前路径,如果是'.'则不予处理,如果是'..',去掉最后的项, 2.同时更新文件列表 3.更新文件显示属性''' global gCurrentDir sel = lbDirs.get(lbDirs.curselection()) if sel == '.' : return elif sel == '..': gCurrentDir = os.path.split(gCurrentDir)[0] print gCurrentDir else: gCurrentDir = gCurrentDir + os.sep + sel print gCurrentDir os.chdir(gCurrentDir) refreshDirs(lbDirs,gCurrentDir) refreshFiles(lbFiles,gCurrentDir) showProperties(event)
# 创建目录列表 lbDirs = Listbox(root) refreshDirs(lbDirs,gCurrentDir) lbDirs.grid(row = 2,column = 0,stick = W) lbDirs.bind('',changeDir)
def showProperties(event): '''用于显示文件的属性 1.文件路径 2.文件大小 3.文件创建日期 4.文件修改日期 5.文件访问日期''' import time try: # 注意考虑当前目录没有文件的情况,这里使用异常处理,信息显示为空 fn = gCurrentDir + os.sep + lbFiles.get(lbFiles.curselection()) print 'fn = ',fn state = os.stat(fn) msg = '' msg = 'Location:\t' + fn + '\n' msg = msg + 'size:' + ('%d' % state[-4]) + '\n' t = time.localtime(state[-1]) msg = msg + 'create:' + \ ('%d/%d/%d %d:%d:%d' % \ (t[0],t[1],t[2],t[3],t[4],t[5])) + '\n' t = time.localtime(state[-2]) msg = msg + 'modify:' + \ ('%d/%d/%d %d:%d:%d' % \ (t[0],t[1],t[2],t[3],t[4],t[5])) + '\n' t = time.localtime(state[-3]) msg = msg + 'access:' + \ ('%d/%d/%d %d:%d:%d' % \ (t[0],t[1],t[2],t[3],t[4],t[5])) + '\n'# os.linesep lblProperities['text'] = msg except: msg = '' lblProperities['text'] = msg # 创建文件列表 lbFiles = Listbox(root) refreshFiles(lbFiles,gCurrentDir) lbFiles.grid(row = 2,column = 1,stick = W) lbFiles.bind('',showProperties)
# 创建属性标签 lblProperities = Message(root) showProperties(0) lblProperities.grid(row = 2,column = 2) root.mainloop()
|