Python定義統計指定目錄大小的函式(含子目錄)
阿新 • • 發佈:2019-02-03
初學者,僅供學習交流
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個扇區。顯然,簇是作業系統所使用的邏輯概念,而非磁碟的物理特性。 為了更好地管理磁碟空間和更高效地從硬碟讀取資料,作業系統規定一個簇中只能放置一個檔案的內容,因此檔案所佔用的空間,只能是簇的整數倍;而如果檔案實際大小小於一簇,它也要佔一簇的空間。所以,一般情況下檔案所佔空間要略大於檔案的實際大小,只有在少數情況下,即檔案的實際大小恰好是簇的整數倍時,檔案的實際大小才會與所佔空間完全一致。