首页 > 解决方案 > 使用 python 更快地搜索 Azure blob 名称?

问题描述

我有一个需要在 Azure 上搜索的文件名列表。现在作为一个菜鸟,我正在遍历每个 blob 名称并比较字符串,但我认为必须有最简单快捷的方法来完成这项工作。当前的解决方案使我的 HTTP 响应非常慢。

def ifblob_exists(self, filename):
        try:
            container_name = 'xxx'
            AZURE_KEY = 'xxx'
            SAS_KEY = 'xxx'
            ACCOUNT_NAME = 'xxx'
            block_blob_service = BlockBlobService(account_name= ACCOUNT_NAME, account_key= None, sas_token = SAS_KEY, socket_timeout= 10000)

            generator = block_blob_service.list_blobs(container_name)
            for blob in generator:
                if filename == blob.name:
                    print("\t Blob exists :"+" "+blob.name)
                    return True
                else:
                    print('Blob does not exists '+filename)
                    return False
        except Exception as e:
            print(e)

标签: pythonpython-3.xazureazure-blob-storage

解决方案


请使用existsazure storage python sdk 中的方法。

def ifblob_exists(filename):
    try:
        container_name = '***'

        block_blob_service = BlockBlobService(account_name=accountName, account_key=accountKey,
                                              socket_timeout=10000)

        isExist = block_blob_service.exists(container_name, filename)
        if isExist:
            print("\t Blob exists :" + " " + filename)
        else:
            print("\t Blob exists :" + " " + filename)

当然,如果你有文件名列表,你至少需要循环调用上面的函数。

希望它可以帮助你。


推荐阅读