還在手動算 KB、MB?一行代碼搞定文件大小格式化?。?/h1>
在寫 Python 腳本的時候,我們經(jīng)常會遇到這樣的場景:
- 上傳文件,需要判斷文件大小是否超過限制;
- 讀取日志,想看看當前文件有多大;
- 后臺管理系統(tǒng)中,展示用戶上傳的文件列表,需要一個清晰的文件大小顯示;
- 做數(shù)據(jù)清洗時,判斷原始數(shù)據(jù)文件有多大,是否值得分析處理……
你打開文件一看,os.path.getsize() 給你返回一堆這樣的:
2048576
這是什么?多少 MB?多少 KB?你是不是還拿個計算器除以 1024?如果你還在顯示「字節(jié)數(shù)」,那真就太“低級”了!
那么問題來了:
如果遇到這種需求:獲取文件大小并展示為 "1.95 MB"、"3.2 GB",你會怎么處理?
今天就帶來一個高質量、可復用、業(yè)務常用的工具函數(shù),讓你輕松搞定這個需求!
實用函數(shù):格式化文件大?。ㄖС謫挝磺袚Q)
import os
defget_file_size(path: str) -> str:
"""
獲取文件大小,并格式化為人類可讀的單位(KB/MB/GB)
:param path: 文件路徑
:return: 格式化后的文件大小字符串
"""
ifnot os.path.isfile(path):
return"文件不存在"
size = os.path.getsize(path) # 單位:字節(jié) B
units = ['B', 'KB', 'MB', 'GB', 'TB']
i = 0
while size >= 1024and i < len(units) - 1:
size /= 1024.0
i += 1
return f"{size:.2f} {units[i]}"
使用方式非常簡單:
file_path = "test.zip"
print(get_file_size(file_path))
# 輸出:比如 2.35 MB
如果文件不存在,會提示“文件不存在”,避免程序直接報錯。
背后原理講解
你看到的是一行函數(shù)調用,其實背后邏輯包含:
- 文件大小獲取: os.path.getsize(path) 返回的是字節(jié)(byte)單位;
- 格式化處理: 通過不斷除以 1024,轉換成合適的單位(比如 KB、MB、GB);
- 精度控制: 格式化為兩位小數(shù),展示更加美觀;
- 健壯性: 判斷文件是否存在,不存在直接返回提示;
實戰(zhàn)使用場景
你可以把這個函數(shù)加到任何項目中,提升用戶體驗:
使用場景 | 示例效果 |
管理后臺文件管理模塊 | 顯示“3.45 MB” |
下載頁面顯示進度 | 顯示“已下載:58.76 MB / 1024 MB” |
上傳接口做大小限制 | 判斷是否超過 20MB |
統(tǒng)計磁盤文件夾大小 | 組合遞歸遍歷調用,格式化顯示 |
拓展建議:如何讓它更強?
你也可以基于這個基礎版本進行擴展,比如:
- 支持傳入單位(用戶想固定返回 KB)
- 支持目錄大小計算(遞歸文件夾所有文件總和)
- 多語言單位支持(B, KB, MB → 字節(jié)、千字節(jié)、兆字節(jié))
這樣一個小工具,作為工具函數(shù)庫中的一員,極大地提升了你的開發(fā)效率!
小結
文件大小的處理雖然是小細節(jié),但卻是很多用戶真正關注的“體驗細節(jié)”。一個簡潔、優(yōu)雅的展示,不僅減少了用戶的困惑,也提升了產(chǎn)品的專業(yè)感。
開發(fā)不只是完成功能,更是讓功能好用、好看、好維護!