檔案資訊查看器

來源:互聯網
上載者:User
# -*- 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()

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.