文件信息查看器

#  -*- 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()
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值