如何获取 Zarr Group 的字节大小

本文介绍如何使用 zarr 库内置的 `zarr.getsize()` 函数快速、准确地获取 Zarr Group(包括其所有子组和数组)在磁盘上占用的总字节数。

Zarr 是一种用于存储 N 维数组的高效、分块、压缩格式,常用于大规模科学计算和遥感、生物信息等场景。与单个数组不同,Zarr Group 是一个容器结构,可包含多个子组、数据集(数组)及元数据(如 .zgroup 和 .zattrs 文件)。因此,获取其真实磁盘占用大小不能仅靠统计某个文件,而需递归遍历所有关联文件。

幸运的是,zarr 提供了开箱即用的工具函数 zarr.getsize(),它会自动解析 Group 的层级结构,并汇总所有底层存储对象(如 .zarray、分块数据文件、元数据文件等)的实际字节大小。

以下是最简实用示例:

import zarr

# 以只读模式打开 Zarr Group(推荐,避免意外写入)
group = zarr.open_group('path/to/your/zarr_group', mode='r')

# 获取整个 Group(含所有子组、数组及其分块)的总字节数
size_in_bytes = zarr.getsize(group)

print(f"Size of Zarr group: {size_in_bytes:,} bytes")  # 使用千位分隔符提升可读性

注意事项:

? 小技巧: 可进一步转换为更直观的单位:

def format_size(num_bytes: int) -> str:
    for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
        if num_bytes < 1024.0:
            return f"{num_bytes:.2f} {unit}"
        num_bytes /= 1024.0
    return f"{num_bytes:.2f} PB"

print(f"Group size: {format_size(size_in_bytes)}")

总之,zarr.getsize() 是获取 Zarr Group 磁盘占用的权威、可靠且跨后端兼容的方法,无需手动遍历或解析目录结构,是生产环境和调试分析中的必备工具。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。