1. 程式人生 > >Python定義統計指定目錄大小的函式(含子目錄)

Python定義統計指定目錄大小的函式(含子目錄)

初學者,僅供學習交流

1.定義統計指定目錄大小的函式

程式碼如下:

import os

def dir_size(d):
    '''
    定義計算指定目錄大小的函式
    '''
    sum = 0
    #判斷指定目錄是否為檔案
    if os.path.isfile(d):
        sum+=os.path.getsize(d)
    #判斷指定目錄是否為資料夾
    if os.path.isdir(d):
        dir_list = os.listdir(d)    
        for f in dir_list:
            file = os.path.join(d,f)
            if
os.path.isfile(file): sum+=os.path.getsize(file) if os.path.isdir(file): sum+=dir_size(file)#遞迴統計 return sum while True: key_word = input("請輸入指定檔案目錄的資料夾或檔案(例:D:\\Python或D:\\Python\\1.py),直接回車即退出:\n") if key_word == "": break else: print("{}位元組"
.format(dir_size(key_word)))

2.執行結果

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

小常識:為什麼檔案屬性裡檔案大小和所佔用空間不一致?

檔案系統是作業系統與驅動器之間的介面,當作業系統請求從硬盤裡讀取一個檔案時,會請求相應的檔案系統(FAT 16/32/NTFS)開啟檔案。扇區是磁碟最小的物理儲存單元,但由於作業系統無法對數目眾多的扇區進行定址,所以作業系統就將相鄰的扇區組合在一起,形成一個簇,然後再對簇進行管理。每個簇可以包括2、4、8、16、32或64個扇區。顯然,簇是作業系統所使用的邏輯概念,而非磁碟的物理特性。 為了更好地管理磁碟空間和更高效地從硬碟讀取資料,作業系統規定一個簇中只能放置一個檔案的內容,因此檔案所佔用的空間,只能是簇的整數倍;而如果檔案實際大小小於一簇,它也要佔一簇的空間。所以,一般情況下檔案所佔空間要略大於檔案的實際大小,只有在少數情況下,即檔案的實際大小恰好是簇的整數倍時,檔案的實際大小才會與所佔空間完全一致。

歡迎大家提出改進意見