如何使用 Python 计算目录大小?

2025年1月5日 | 阅读 5 分钟

引言

在本教程中,我们将学习如何使用 Python 计算目录大小。目录定义为子目录和文件的集合。这些子目录在目录层次结构中使用“/”运算符分隔。目录层次结构是通过将所有文件和子目录组织到一个主目录(也称为“根”目录)中来创建的。当我们想要计算目录大小时,我们将它视为根目录,并计算其中包含的所有文件和子目录(如果有)的单独大小。

我们需要遵循几个步骤来使用 Python 计算目录大小,如下所示:

  1. 首先,我们需要导入所有必需的模块。
  2. 然后,我们创建一个 size 变量并将其赋值为 0。
  3. 之后,我们为文件夹分配一个路径。
  4. 然后,扫描文件夹。
  5. 查找此文件夹中每个文件的大小并将其添加到总大小中。
  6. 最后,我们在输出中显示此文件夹的总大小。

因此,要获取目录的大小,我们需要遍历目录层次结构以获取其中所有文件的大小。Python 提供了几种方法来实现这一点,如下所示:

  1. 使用 os.path.getsize() 方法
  2. 使用 os.stat().st_size 属性
  3. 在 *NIX 操作系统中使用 du 命令

现在,我们来学习以上几种使用 Python 计算目录大小的方法。

1. 使用 os.path.getsize() 方法

os.path.getsize() 方法用于获取目录中文件的大小。我们可以将列表中所有文件的大小相加以获得列表的总大小。但是,除了此方法,我们还可以使用 os.walk() 方法来遍历目录中的所有文件。os.path.getsize() 方法接受文件路径作为参数。然后,它以字节为单位返回文件大小。

程序代码

在这里,我们提供了使用 Python 中的 os.path.getsize() 方法计算目录大小的程序代码。在这里,我们使用循环通过 os.walk() 方法遍历目录层次结构。然后使用 os.path.join() 方法获取此目录中存储的每个文件的路径,并将其作为参数传递给 os.path.getsize() 方法。然后,添加并查看所有文件的大小。代码如下:

输出

现在,我们运行上面的代码并找到目录的大小。请注意,对于不同的目录,输出将不同。输出如下:

x
The directory size is: 2768215

除了 os.walk() 方法,我们还可以使用 os.scandir() 方法或 os.listdir() 方法来列出保存的文件并存储它们的大小。

程序代码

在这里,我们提供了使用 Python 中的 scandir() 方法计算目录大小的程序代码。我们使用 scandir() 方法扫描当前目录并递归获取其中所有文件的当前大小。将它们的大小相加以维护目录的总大小。代码如下:

输出

现在,我们运行上面的代码并找到目录的大小。输出如下:

The directory size is: 2278601

程序代码

在这里,我们提供了使用 Python 中的 os.listdir() 方法计算目录大小的程序代码。我们使用 os.listdir() 方法代替 os.scandir() 方法。代码如下:

输出

现在,我们运行上面的代码并找到目录的大小。输出如下:

The directory size is: 2287463

2. 使用 os.stat().st_size 属性

计算文件大小的另一种方法是使用 os.stat().st_size 属性。os.stat() 方法用于获取文件大小(以字节为单位)或其他相关信息。由于我们只需要文件大小,因此我们使用 st_size 属性。

程序代码

在这里,我们提供了使用 Python 中的 os.stat().st_size 属性计算目录大小的程序代码。在下面的程序代码中,我们导入了 pathlib 模块并使用 glob() 方法列出当前目录中找到的所有文件。然后,如果文件存在于目录中,则使用 os.stat().st_size 属性重新计算它们的大小。代码如下:

输出

现在,我们运行上面的代码并找到目录的大小。输出如下:

The directory size is: 2279832

程序代码

在这里,我们提供了使用 Python 中的 os.stat().st_size 属性计算目录大小的程序代码。我们也可以使用 os.scandir() 方法代替 glob() 方法来列出目录中的所有文件。代码如下:

输出

现在,我们运行上面的代码并找到目录的大小。输出如下:

The directory size is:  2771236

3. 在 *NIX 操作系统中使用 du 命令

计算文件大小的另一种方法是使用 NIX 操作系统的 du 命令。如果您使用的是 NIX 操作系统,则可以使用 subprocess 模块调用 du 命令,这比上述方法更简单。

程序代码

在这里,我们提供了使用 Python 中的 *NIX 操作系统 du 命令计算目录大小的程序代码。代码如下:

输出

现在,我们运行上面的代码并找到目录的大小。输出如下:

The directory size is:  9.0K

结论

在本教程中,我们学习了如何使用 Python 计算目录大小。我们学习了计算目录大小的各种方法以及这些方法中的一些程序代码。