You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么调用os.stat().st_size查询部分目录大小时返回0

问题根因

你遇到的目录st_size返回0的情况是操作系统及底层文件系统的实现差异导致的,和你写的代码没有关系:

  • RealPython的示例运行在Linux、macOS这类类Unix系统上。这类系统的文件系统(EXT4、APFS等)将目录视为特殊文件,存储的是目录内文件的元数据映射列表,st_size返回的就是这个列表占用的磁盘块大小,因此会返回4096、12288这类符合磁盘块单位的数值。
  • 你的代码应该是运行在Windows系统上。Windows下的NTFS、FAT32等文件系统没有实现目录本身的大小统计逻辑,调用stat()读取目录属性时,st_size字段固定返回0,属于系统层面的正常表现。
补充方案

如果需要在Windows下统计目录的实际内容占用大小,需要递归遍历目录下所有文件,累加文件大小得到结果,参考实现如下:

import os

def calc_dir_total_size(dir_path: str) -> int:
    total_size = 0
    with os.scandir(dir_path) as entries:
        for entry in entries:
            if entry.is_file(follow_symlinks=False):
                total_size += entry.stat().st_size
            elif entry.is_dir(follow_symlinks=False):
                total_size += calc_dir_total_size(entry.path)
    return total_size

内容的提问来源于stack exchange,提问作者Hat Straw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:36:02