簡體   English   中英

Python shutil.disk_usage 可用和已用空間值不反映實際已用和可用空間值

[英]Python shutil.disk_usage free and used space values do not reflect actual used and free space values

我使用 Python 的 shutil.disk_usage function 使用“/”作為參數來確定我的計算機的總空間、已用空間和可用空間(我有一台使用 macOS Catalina 的 Mac)。 我得到的結果與實際結果不符。

shutil.disk_usage("/") 的結果:
總計 = 121.12 GB
已用 = 11.3 GB
免費 = 19.79 GB

通過檢查我的計算機存儲的實際結果:
總計 = 121.12 GB
已用 = 97.78 GB {文檔 (35.34GB) + 應用程序 (20.19GB) + 系統 (11.3GB) + 其他 (30.95GB)}
免費 = 22.64 GB

兩者的總值都是正確的,但已用和可用空間值是關閉的。

系統正在使用 11.3 GB,這是 shutil.disk_usage("/") 計算的確切數量,但是當我查看計算此數量的代碼時,報告為:

used = (f_blocks - f_bfree) * f_frsize

我讀為“總塊減去空閑塊(已用塊)乘以塊大小等於已用空間量”。 我不明白為什么這個值報告為 11.3 GB,而不是已用空間的總量。

同樣,我不明白為什么可用空間的價值:

free = f_bavail * f_frsize

我將其讀為“非超級用戶可用的塊數(我認為這意味着任何沒有 sudo 訪問權限的人都可以使用免費塊,因此訪客帳戶可以使用免費塊)乘以塊大小等於免費的數量空間”。 我不明白為什么當我有 22.64 GB 的可用空間時,這個值報告為 19.79 GB。

我預計總計 = 已使用 + 免費,但顯然情況並非如此。

使用 shutil.disk_usage("/") 計算的已用和可用空間的值為何與實際值不同。

在搜索了一段時間后,我遇到了這篇文章Get hard disk size in Python ,其中評論指出 shutil.disk_usage 只給出分區的大小,而不是整個磁盤。

我使用 df -h 列出了所有文件系統及其掛載點和磁盤使用統計信息(總大小、已用空間、可用空間)

將 df -h 的結果與給定掛載點的 shutil.disk_usage 進行比較,將 df -h 中的值乘以 1024^3 字節/gb(macOS 使用 1000^3bytes/gb 報告它們的存儲值)得到相同的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM