# -*- 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()