Skip to main content
 首页 » 编程设计

python之如何通过 Python Azure SDK 了解 Azure blob 对象的大小

2025年05月04日26tintown

在 Microsoft Azure documentation for Python developers 之后. azure.storage.blob.models.Blob 类确实有一个名为 __sizeof__() 的私有(private)方法。但它返回一个常量值 16,无论 blob 是空的(0 字节)还是 1 GB。是否有任何 blob 对象的方法/属性可以动态检查对象的大小?

更清楚地说,这就是我的源代码的样子。

for i in blobService.list_blobs(container_name=container, prefix=path): 
    if i.name.endswith('.json') and r'CIJSONTM.json/part' in i.name: 
        #do some stuffs 

但是,数据池包含许多具有合法名称的空 blob,在我#do some stuffs 之前,我想对大小进行额外检查,以判断我是否正在处理一个空的 blob Blob 。

此外,如果不是 blob 对象的大小,__sizeof__() 方法究竟提供了什么?

请您参考如下方法:

I want to have an additional check on the size to judge whether I am dealing with an empty blob.

我们可以使用 BlobProperties().content_length检查它是否是一个空的 blob。

BlockBlobService.get_blob_properties(block_blob_service,container_name,blob_name).properties.content_length 

以下是如何获取blob content_length 的演示代码:

from azure.storage.blob import BlockBlobService 
block_blob_service = BlockBlobService(account_name='accoutName', account_key='accountKey') 
container_name ='containerName' 
block_blob_service.create_container(container_name) 
generator = block_blob_service.list_blobs(container_name) 
for blob in generator: 
    length = BlockBlobService.get_blob_properties(block_blob_service,container_name,blob.name).properties.content_length 
    print("\t Blob name: " + blob.name) 
    print(length)