#
-*- 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()
''' 文件信息查看器,可以显示文件的路径,大小,创建日期,最后修改日期,最后访问日期 '''
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()