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

  • Post category:Python

计算一个目录的大小可以通过Python的os和os.path模块实现。下面是Python计算一个目录大小的详细攻略:

确定目录路径

在计算一个目录的大小之前,首先需要确定该目录的路径。在Python中可以通过os.path模块的abspath()函数获取目录的绝对路径。例如,我们可以使用下面的代码获取当前工作目录的绝对路径:

import os

dir_path = os.path.abspath('.')
print(dir_path)

计算目录大小

确定目录路径之后,就可以使用os模块来计算目录大小。可以通过os.path模块的isfile()isdir()函数判断文件是否为文件或目录,从而实现递归计算目录大小。其中,isfile()函数用于判断是否为文件,返回True表示为文件,False表示为目录;isdir()函数用于判断是否为目录,返回True表示为目录,False表示为文件。具体实现如下:

import os

def get_dir_size(dir_path):
    size = 0
    for root, dirs, files in os.walk(dir_path):
        for f in files:
            size += os.path.getsize(os.path.join(root, f))
        for d in dirs:
            size += get_dir_size(os.path.join(root, d))
    return size

函数get_dir_size()接收一个目录路径作为输入参数,使用os.walk()遍历该目录下的所有文件和子目录,计算它们的大小并累加到size变量中。其中,os.path.getsize()函数用于获取文件的大小。

示例

下面是两个示例,演示如何使用Python计算目录大小。

  1. 计算当前工作目录的大小:
import os

dir_path = os.path.abspath('.')
size = get_dir_size(dir_path)
print(f'The directory size of {dir_path} is: {size} bytes.')

输出信息如下:

The directory size of /path/to/current_directory is: 123456 bytes.
  1. 计算指定目录的大小:
import os

dir_path = '/path/to/directory'
size = get_dir_size(dir_path)
print(f'The directory size of {dir_path} is: {size} bytes.')

输出信息如下:

The directory size of /path/to/directory is: 789012 bytes.