POP Article V2.0 设为主页
收藏本站
首 页交流论坛留 言
您现在的位置:首 页 >> Python 与 XML >> Python开发 >> 查看文章
Python 显示文件信息工具
作者:灵蛇舞动  来源:www.sqlite.com.cn  时间:2007-10-18  【 字体: 】 〖 双击滚屏 〗
显示文件信息工具

# -*- 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('',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:\t' + fn + '\n'
        msg = msg + 'size:' + ('%d' % state[-4]) + '\n'
        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])) + '\n'
        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])) + '\n'
        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])) + '\n'# 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('',showProperties)

# 创建属性标签
lblProperities = Message(root)
showProperties(0)
lblProperities.grid(row = 2,column = 2)
root.mainloop()

浏览次数:   【 打 印 】【 关 闭
上一篇:Berkeley DB使用全解
下一篇:Python正则表达式操作指南(3)
 论坛登陆
用户名:
密  码:
验证码: 
Cookie 选项:
正常登陆 隐身登陆
   
没有注册?
 文章搜索
 推荐文章
 酷站推荐
 热门文章
 网站统计
关于我们 | 网站地图 | 联系我们 | 网站历史 | 友情链接 | TOP
Copyright© 2006 Sqlite中文社区  程序开发: mistletoe  站长: 林轩 陈文成