1

遵循适用于 Python 开发人员的 Microsoft Azure 文档。该类azure.storage.blob.models.Blob确实有一个名为的私有方法__sizeof__()。但它返回一个常量值 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,在 I 之前#do some stuffs,我想对大小进行额外检查,以判断我是否正在处理空 blob。

__sizeof__()此外,如果不是 blob 对象的大小,该方法究竟给出了什么奖励?

4

2 回答 2

6

我想对大小进行额外检查,以判断我是否正在处理一个空 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)
于 2018-11-19T08:24:43.820 回答
0
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)
于 2021-08-18T19:22:31.357 回答