详解Python 如何计算一个目录的大小

  • Post category:Python

要计算一个目录的大小,可以使用Python的os和os.path模块来执行。下面是计算目录大小的方法:

  1. 导入Python的os和os.path模块:
import os
import os.path
  1. 使用os.path.getsize()函数来获取每个文件的大小,并将其添加到一个列表中:
def get_dir_size(dir_path):
    total_size = 0
    for filename in os.listdir(dir_path):
        file_path = os.path.join(dir_path, filename)
        if os.path.isdir(file_path):
            total_size += get_dir_size(file_path)
        else:
            total_size += os.path.getsize(file_path)
    return total_size

在这个函数中,我们首先初始化一个total_size变量,它会在每次递归调用后累加每个文件的大小。然后,我们使用os.listdir()函数来遍历目录中的每个文件和子目录。如果文件路径是一个子目录,我们就递归调用这个函数来获取它的大小,并将它添加到total_size中。如果文件路径是一个文件,我们就使用os.path.getsize()函数来获取它的大小,并将它添加到total_size中。最后,我们返回total_size。

以下是一个示例:

dir_path = '/path/to/directory'

size = get_dir_size(dir_path)

print('Size:', size)

在这个示例中,我们首先指定一个目录的路径,并将它存储在dir_path变量中。然后,我们调用get_dir_size()函数来获取这个目录的大小,并将它存储在size变量中。最后,我们打印出这个目录的大小。

另一个示例:

dir_path = '/path/to/directory'

sizes = []

for subdir in os.listdir(dir_path):
    subdir_path = os.path.join(dir_path, subdir)
    if os.path.isdir(subdir_path):
        sizes.append((subdir, get_dir_size(subdir_path)))

for subdir, size in sizes:
    print(subdir, ':', size)

在这个示例中,我们首先指定一个目录的路径,并将它存储在dir_path变量中。然后,我们使用os.listdir()函数来遍历目录中的每个文件和子目录,并将每个子目录的大小添加到一个列表中。最后,我们打印出每个子目录的名称和大小。

总结:

计算目录的大小可以使用Python的os和os.path模块。我们可以使用os.listdir()函数遍历目录中的每个文件和子目录,并使用os.path.getsize()函数来获取每个文件的大小。我们可以使用递归函数来处理子目录,并使用一个变量来累加每个文件的大小。最后,我们可以打印出目录的大小或每个子目录的名称和大小。