在進行計算一個文件夾內容大小的時候,我們要考慮文件夾內都有什么內容,可能都是一個一個的單文件,也有可能都是子文件夾,或者二者都有,既然要計算整個文件夾的大小,我們當然要計算每一個文件的大小以及每一個子文件夾下的每一個子文件。計算每一個文件的大小我們肯定都可以計算到,或者如果我們知道一個文件夾內有子文件夾的數量,一個個遍歷子文件夾的內容進行計算,但是如果我們不知道這個文件夾內到底有多少子文件夾呢?所以,根據我的思路,可以使用遞歸的方式進行計算每一個文件及每一個字文件夾的大小,但有個弊端就是在python中遞歸有最大遞歸層數,說不定會有哪個變態套了N多層文件夾,這樣的話我們的程序可能會拋出異常,所以我們還要做一定的異常處理,總之閑話少說,見代碼吧。代碼如下:
1 import os 2 total_size=0 3 def file_size(path): 4 global total_size 5 path=os.path.abspath(path) 6 file_list=os.listdir(path) 7 for i in file_list: 8 i_path = os.path.join(path, i) 9 if os.path.isfile(i_path): 10 total_size += os.path.getsize(i_path) 11 else: 12 try: 13 file_size(i_path) 14 except RecursionError: 15 print('遞歸操作時超出最大界限') 16 return total_size 17 18 19 print(file_size('D:\\紅軍不怕遠征難\\蒼老師精彩集錦'))