【问题标题】:How to know the size of an Azure blob object via Python Azure SDK如何通过 Python Azure SDK 了解 Azure blob 对象的大小
【发布时间】:2019-04-21 12:36:54
【问题描述】:

跟随Microsoft Azure documentation for Python developersazure.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,在我 #do some stuffs 之前,我想对大小进行额外检查,以判断我是否正在处理空 blob。

另外,__sizeof__() 方法究竟给出了什么好处,如果不是 blob 对象的大小?

【问题讨论】:

  • 您的链接 blob 类具有元数据属性 - 您能检查其中的内容吗?也许,根据您的示例: i.metadata['size'] 或等效的 python 从命名键值对中获取值?

标签: python azure azure-blob-storage sizeof azure-sdk-python


【解决方案1】:

我想对大小进行额外检查,以判断我是否在处理空 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)

【讨论】:

  • 谢谢。奇怪的是,该方法似乎没有出现在文档中。 '__sizeof__()' 方法在这里做了什么?
  • 您能否添加有关__sizeof__() 的更多信息?你看过source code吗?
  • 这个大小以字节为单位?
  • 这个答案被贬值了
【解决方案2】:
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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2021-08-26
    • 2014-10-06
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    相关资源
    最近更新 更多