首页 >后端开发 >Python教程 >如何在Python中计算目录的大小?

如何在Python中计算目录的大小?

DDD
DDD原创
2024-11-02 06:20:29356浏览

How Can I Calculate the Size of a Directory in Python?

使用 Python 计算目录大小:综合指南

在广泛的文件系统中导航时,确定目录的大小可能变得非常宝贵。 Python 提供了一系列包含此功能的模块。

考虑以下 Python 代码片段:

<code class="python">import os

def get_size(start_path='.'):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(start_path):
        for f in filenames:
            fp = os.path.join(dirpath, f)
            # Skip symbolic links
            if not os.path.islink(fp):
                total_size += os.path.getsize(fp)

    return total_size

print(get_size(), 'bytes')</code>

该解决方案通过递归遍历子目录、累积文件大小提供了一种全面的方法。它避免了符号链接以确保准确的大小计算。格式化的大小(例如,Mb/Gb)不会直接合并,但可以作为后续步骤轻松添加。

此外,为了仅计算根目录的大小而不深入到子目录,可以使用以下简化方法os.listdir 可用:

<code class="python">import os

sum(os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f))</code>

此代码片段对当前目录中的文件大小进行紧凑求和,不包括子目录。

此外,为了精确确定文件大小,os.path.getsize优于 os.stat().st_size。由于潜在的优化和开销,后者可能会产生误导。

“os.scandir”已被证明是 Python 3.4 及更低版本中“os.walk”的有效替代方案。从 Python 3.5 开始,“os.walk”已得到增强,以匹配“os.scandir”性能。

对于更现代的方法,“pathlib”提供了一个方便的解决方案:

<code class="python">from pathlib import Path

root_directory = Path('.')
sum(f.stat().st_size for f in root_directory.glob('**/*') if f.is_file())</code>

此代码利用“glob”函数进行递归搜索,并利用“Path”对象来增强文件处理。

总之,Python 提供了一系列函数来满足您的目录大小计算需求。选择最符合您的要求的方法,以有效地导航和管理您的文件系统。

以上是如何在Python中计算目录的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn