天天看點

在指定的盤符,搜尋出給定字尾名的檔案

# -*- coding: cp936 -*-
#python 27
#xiaodeng
#http://www.cnblogs.com/hongten/p/hongten_python_file_info.html
#在指定的盤符,搜尋出給定字尾名的檔案


#本腳本知識點:
#os.listdir():傳回指定目錄下的所有檔案和目錄名(檔案夾)
#os.path.getsize(name):獲得檔案大小,如果name是目錄傳回OL
#os.path.join(path,name):連接配接目錄與檔案名或目錄
#os.walk(DESK),傳回結果,三個參數 1.父目錄,檔案的目錄;2.所有檔案夾名字(不含路徑);3.所有檔案名字



import os
import time
now =  str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))#目前時間




#####################《需要修改的參數》#################################
#指定盤符
DESK=r'C:python'#如路徑包含中文,r不能丢~~

#資訊儲存檔案的路徑
SAVE_FILE = 'C:UsersAdministratorDesktop新浪APIinfo.log'

#需要查找的檔案字尾類型
FILE_TYPE = ['py','txt']



#####################《全局變量定義》#################################
#檔案計數
FILE_COUNT=0        
#目錄計數
DIR_COUNT=0         
#檔案名(含絕對路徑)總計
ABS_FILES=[]
#符合要求的檔案總數
YES_FILES_COUNT=[]
#不符合要求的檔案總數
NO_FILES_COUNT=[]

    



#主程式開始
#os.walk(DESK)傳回結果,三個參數(具備遞歸功能)。1.父目錄,檔案的目錄;2.所有檔案夾名字(不含路徑);3.所有檔案名字
for parent,dirnames,filenames in os.walk(DESK):    
    #計算總共的檔案夾個數
    DIR_COUNT=DIR_COUNT+len(dirnames)

    #計算總共的檔案個數
    FILE_COUNT=FILE_COUNT+len(filenames)

    #提取符合要求的檔案資料
    for file in filenames:
        for key in FILE_TYPE:#周遊需要查詢的特定字尾的檔案,如:txt
            if key in file:
                YES_FILES_COUNT.append(key)#符合要求的檔案總數
                filepath=os.path.join(parent,file)#檔案絕對路徑
                size=os.path.getsize(filepath)#擷取檔案大小
                string='%s	%s	%s'%(now,filepath,size)
                ABS_FILES.append(string)
                
                               
#完成寫入和列印操作
if __name__=='__main__':
    #寫入檔案
    info=open('info.log','w+')
    for files in ABS_FILES:
        info.write(files+'
')
    info.close()
    print '查詢結果:'
    print '##'*20
    print '總檔案夾數量:',DIR_COUNT,'總檔案數量:',FILE_COUNT
    #print '檔案名彙總:',FILES

    NO_FILES_COUNT=FILE_COUNT-len(YES_FILES_COUNT)
    print '符合要求的檔案總數:',len(YES_FILES_COUNT),'不符合要求的檔案總數:',NO_FILES_COUNT
        

'''
查詢結果:
########################################
總檔案夾數量: 4 總檔案數量: 7
符合要求的檔案總數: 3 不符合要求的檔案總數: 4
'''