文件信息查看器

来源:互联网 发布:牛屎芯片编程器 编辑:程序博客网 时间:2024/05/16 14:00
# -*- 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()
 
原创粉丝点击