python - 使用 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)
解决方案
请使用exists
azure 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)
当然,如果你有文件名列表,你至少需要循环调用上面的函数。
希望它可以帮助你。
推荐阅读
- python - Python to sharepoint Forbidden for URL
- mongodb - MongoDB docker副本集连接错误“找不到主机”
- reactjs - 使用不返回任何内容的脚本反应组件
- mysql - SQL比较同一表中的两行并创建新列
- r - 跟踪纵向数据的状态变化和变化日期
- javascript - React Native 多行文本缩进
- c - 告诉 llvm-cov 忽略一个块?
- node.js - Docker 容器关闭并显示日志“SyntaxError: Unexpected token '<'”
- c - 是否可以在 C 常量表达式中进行联合类型双关语?
- android - 当 android 上的 chrome 将桌面更改为移动模式时,window.location.href 不会返回由 history.replacestate 更新的 URL,反之亦然