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

How to know the size of an Azure blob object via Python Azure SDK

Microsoft Azure documentation for Python developers 之后。 azure.storage.blob.models.Blob class 确实有一个名为 __sizeof__() 的私有方法。但它 returns 一个常量值 16,无论 blob 是空的(0 字节)还是 1 GB。是否有任何 method/attribute 的 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 对象的大小,__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)
from azure.storage.blob import BlobServiceClient

blob_service_client = BlobServiceClient.from_connection_string(connect_str)
blob_list = blob_service_client.get_container_client(my_container).list_blobs()
for blob in blob_list:
    print("\t" + blob.name)
    print('\tsize=', blob.size)