我刚刚上传了 5GB 数据,想要验证 MD5 和是否匹配。我已经为文件的本地副本计算了此值,但从 Azure 获取 ContentMD5 时遇到问题。到目前为止,我得到一个空字典,但我可以看到 blob 名称。目前我将其限制为前 10 项,仅供调试之用。我知道 Azure 上的 MD5 与典型的 md5sum 调用不同,并且已在本地允许这样做。但是,目前我看不到任何 blob 属性。当我通过 Azure 控制台浏览时,这些属性就在那里(ContentMD5 属性也是如此)。
我哪里出错了?
这是我目前的代码:
import os
from os import sys
from azure.storage.blob import BlobServiceClient
def remote_check(connection_str):
blob_service_client = BlobServiceClient.from_connection_string(connection_str)
container_name = "global"
container = blob_service_client.get_container_client(container=container_name)
blob_list = container.list_blobs()
count = 0
for blob in blob_list:
if count < 10:
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob)
a = blob_client.get_blob_properties()
print(a.metadata)
print("Blob name: " + str(blob_client.blob_name))
count = count + 1
else:
break
def main():
try:
CONNECTION_STRING = os.environ['AZURE_STORAGE_CONNECTION_STRING']
remote_check(CONNECTION_STRING)
except KeyError:
print("AZURE_STORAGE_CONNECTION_STRING must be set.")
sys.exit(1)
if __name__ == '__main__':
main()
最佳答案
请确保您使用的是最新版本的软件包 azure-storage-blob 12.6.0 .
一些属性位于content_settings
中,例如要获取content_md5
,您应该使用以下代码:
a=blob_client.get_blob_properties()
print(a.content_settings.content_md5)
这是我的测试结果:
关于python - 获取返回空字典的存储 blob 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65275817/