您的位置:首頁>正文

python計算資料夾大小

C盤又滿了, 怎麼辦?用了一些垃圾清理軟體(或者bat腳本), 但是還是不理想, 那麼具體哪些資料夾下面有巨大的檔呢?windows並不能通過詳細資訊看到每個資料夾的大小(PS:這裡所謂的資料夾的大小是指資料夾下面所有檔的大小之和, 包括子資料夾的大小, 下同), 道理也很簡單, 計算資料夾大小是比較費時的工作。 當然, 也可以通過屬性查看資料夾大小, 但是當一個資料夾下面又有及半個子資料夾的時候, 怎麼知道哪些比較大的, 這個時候不禁想起了linux下面的du命令。

du(disk usage)是查看磁片使用情況非常有用的一個工具(另外一個是df),

具體的使用文檔可以參見連結。 而本人最常使用的參數是這樣的:

du . -h -d 1

上述命令輸出當前資料夾(.)下面 第一層(-d 1)子資料夾的大小, 以human readable(-h)的形式展現, 下面是實際例子:

那windows下面並沒有這樣一個簡單的命令(或者是我不知道?), 不過無所謂, 用python應該比較簡單:

1 # -*- coding: utf-8 -*- 2 import os, sys 3 4 5 def get_path_depth(root, dirpath): 6 return dirpath.count(os.path.sep) - root.count(os.path.sep) 7 8 def human_readable(plain_size): 9 plain_size = float(plain_size) 10 if plain_size = 3 else 0 51 min_size_byte = int(sys.argv[3]) if len(sys.argv) >= 4 else 0 52 main(root, max_depth, min_size_byte)

三個參數, 第一個是資料夾(path);第二個是顯示子資料夾的層數(max_depth, 默認為0); 第三個字數限制資料夾帶下(min_size_byte), 即size小於這個值得資料夾就不顯示了, 預設值為1。

上述代碼使用了兩個比較關鍵的函數:os.walk, 遍歷路徑下的所有資料夾和檔, 注意該函數本身就會遞迴顯示子資料夾的內容;第二個函數是os.path.getsize, 獲取一個檔的大小。

windows下試一試:

Linux下麵試一試:

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示