python3获取文件或文件夹大小并【格式化返回结果】
Background实现方法是基于内置os.path.getsize()方法,底层调用的是os.stat(),如果想最大化性能,则建议使用后者。这里对返回的结果进行了更易于查看的格式化。最终效果最终结果会根据实际大小自动调整单位格式化。源码import osdef get_file_size(filepath):"""获取文件或文件夹的大小注意:TB级别以及超过TB的数据就别用了,需要考虑性能了"
·
Background
- 实现方法是基于内置
os.path.getsize()
方法,底层调用的是os.stat()
,如果想最大化性能,则建议使用后者。- 这里对返回的结果进行了更易于查看的格式化。
最终效果
最终结果会根据实际大小自动调整单位格式化。
源码
import os
def get_file_size(filepath):
"""获取文件或文件夹的大小
注意:TB级别以及超过TB的数据就别用了,需要考虑性能了
"""
res = 0
# 判断输入是文件夹还是文件
if os.path.isdir(filepath):
# 如果是文件夹则统计文件夹下所有文件的大小
for file in os.listdir(filepath):
res += os.path.getsize(f'{filepath}/{file}')
elif os.path.isfile(filepath):
# 如果是文件则直接统计文件的大小
res += os.path.getsize(filepath)
# 格式化返回大小
bu = 1024
if res < bu:
res = f'{bu}B'
elif bu <= res < bu**2:
res = f'{round(res / bu, 3)}KB'
elif bu**2 <= res < bu**3:
res = f'{round(res / bu**2, 3)}MB'
elif bu**3 <= res < bu**4:
res = f'{round(res / bu**3, 3)}GB'
elif bu**4 <= res < bu**5:
res = f'{round(res / bu**4, 3)}TB'
return res
def main():
"""主函数"""
filepath = 'reports/res/'
# filepath = 'reports/res/a.txt'
filesize = get_file_size(filepath)
print(f'filesize: {filesize}')
if __name__ == '__main__':
main()

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)