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()
Logo

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

更多推荐