Azure Python SDK新版本:BlobServiceClient如何获取Blob大小?
新版本Azure Blob Python SDK获取Blob大小的实现
在新版本的azure.storage.blob包中,BlobServiceClient(以及更常用的ContainerClient)确实提供了类似get_blob_properties的方法,而且遍历Blob列表时还能直接获取大小属性,无需额外调用接口,效率更高。
转换后的代码示例
import os from azure.storage.blob import BlobServiceClient # 从环境变量读取配置 CONTAINER_NAME = os.environ["AZURE_CONTAINER_NAME"] AZURE_STORAGE_ACCOUNT = os.environ["AZURE_STORAGE_ACCOUNT"] AZURE_STORAGE_KEY = os.environ["AZURE_STORAGE_KEY"] # 初始化BlobServiceClient(也可以用连接字符串:f"DefaultEndpointsProtocol=https;AccountName={AZURE_STORAGE_ACCOUNT};AccountKey={AZURE_STORAGE_KEY};EndpointSuffix=core.windows.net") blob_service_client = BlobServiceClient( account_url=f"https://{AZURE_STORAGE_ACCOUNT}.blob.core.windows.net", credential=AZURE_STORAGE_KEY ) # 获取容器客户端 container_client = blob_service_client.get_container_client(CONTAINER_NAME) total_size = 0 # 遍历容器内的Blob,直接从返回的BlobProperties中获取大小 for blob in container_client.list_blobs(): # blob是BlobProperties对象,直接访问size属性(对应旧版的content_length) total_size += blob.size print(f"容器总大小: {total_size} 字节")
关键说明
- 直接获取大小:新版本的
list_blobs()返回的BlobProperties对象已经包含size属性,无需额外调用get_blob_properties,减少API请求次数。 - get_blob_properties方法的使用:如果需要获取Blob的其他详细属性(如创建时间、元数据等),可以通过
ContainerClient或BlobServiceClient调用该方法:blob_properties = container_client.get_blob_properties(blob.name) # 获取大小 blob_size = blob_properties.size # 获取创建时间 created_time = blob_properties.created_on - 客户端选择:推荐使用
ContainerClient操作单个容器内的Blob,比直接用BlobServiceClient更直观高效。
内容的提问来源于stack exchange,提问作者paone
相关产品推荐
相关产品推荐

