自从azure-storage-blob的新版本发布后,blockblobservice已被弃用。
如何检查blob是否存在?
这个答案在azure-storage-blob的新版本中不适用。 如何使用Python更快地搜索Azure Blob名称?
我在GitHub上找到了这个问题: https://github.com/Azure/azure-sdk-for-python/issues/12744
自从azure-storage-blob的新版本发布后,blockblobservice已被弃用。
如何检查blob是否存在?
这个答案在azure-storage-blob的新版本中不适用。 如何使用Python更快地搜索Azure Blob名称?
我在GitHub上找到了这个问题: https://github.com/Azure/azure-sdk-for-python/issues/12744
2020年9月10日发布的版本12.5.0现在在新的SDK中具有exists
方法。
例如:
同步:
from azure.storage.blob import BlobClient
blob = BlobClient.from_connection_string(conn_str="my_connection_string", container_name="mycontainer", blob_name="myblob")
exists = blob.exists()
print(exists)
异步:
import asyncio
async def check():
from azure.storage.blob.aio import BlobClient
blob = BlobClient.from_connection_string(conn_str="my_connection_string", container_name="mycontainer", blob_name="myblob")
async with blob:
exists = await blob.exists()
print(exists)
正如 @krshg 建议的那样,检查 blob 文件是否存在的最简单方法是
from azure.storage.blob import BlobClient
conn_str = "my_connection_string"
my_blob_name = "my_dir/my_blob"
blob = BlobClient.from_connection_string(conn_str=conn_str, container_name="mycontainer", blob_name=my_blob_name )
exists = blob.exists()
print(exists)
然而,我有一个小问题需要获取连接字符串。我正在使用 Azure 存储资源管理器。如果您也是这样做的话,您可以通过单击存储资源并在左下角面板上获取连接字符串:
另一件事是,如果容器中有包含您 Blob 文件的目录,您可以轻松地将路径格式用于您的文件。
from azure.storage.blob import BlobServiceClient
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
all_containers = blob_service_client.list_containers()
print([container['name'] for container in all_containers])
上面的代码片段将列出所有容器,我们可以从中检查容器是否存在。但请注意,输出是分页的,因此如果您有大量的容器,则需要使用续订令牌迭代输出。请参阅更多信息:https://github.com/Azure/azure-storage-python/blob/54e60c8c029f41d2573233a70021c4abf77ce67c/azure-storage-blob/azure/storage/blob/baseblobservice.py#L573