# -*- 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('<Double-Button-1>',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: ' + fn + ' '
msg = msg + 'size:' + ('%d' % state[-4]) + ' '
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])) + ' '
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])) + ' '
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])) + ' '# 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('<Double-Button-1>',showProperties)
# 创建属性标签
lblProperities = Message(root)
showProperties(0)
lblProperities.grid(row = 2,column = 2)
root.mainloop()