使用 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中文网其他相关文章!