如何通过Python Azure SDK知道Azure Blob对象的大小

Del*_*lla 1 python sizeof azure azure-storage-blobs azure-sdk-python

遵循针对Python开发人员Microsoft Azure文档。该azure.storage.blob.models.Blob班确实有所谓的私有方法__sizeof__()。但是,无论blob为空(0字节)还是1 GB,它都会返回一个恒定值16。是否有可动态检查对象大小的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
Run Code Online (Sandbox Code Playgroud)

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

另外,__sizeof__()如果不是blob对象的大小,该方法究竟能提供什么的好处呢?

Tom*_*SFT 5

我想再检查一下大小,以判断我是否正在处理空的斑点。

我们可以使用BlobProperties()。content_length来检查它是否为空。

BlockBlobService.get_blob_properties(block_blob_service,container_name,blob_name).properties.content_length
Run Code Online (Sandbox Code Playgroud)

以下是演示代码如何获取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)
Run Code Online (Sandbox Code Playgroud)