我收到错误:无法流式下载
该容器包含大量文件。请告诉我如何在指定的容器中列出blob名称。
SAS令牌/URL具有特权:READ&LIST&写入如果你想了解更多信息,请告诉我,谢谢。
Q1.错误:无法流式下载
from azure.storage.blob import ContainerClient
sas_url="https://[account].blob.core.windows.net/[container]?[SAS_Token]"
container=ContainerClient.from_container_url(sas_url)
blob_list=container.list_blobs()
for blob in blob_list:
print(blob.name+'n')
我想在[container]下的sub_folder='abc/def/ghi'中列出Blob。提前谢谢。
Q2.我尝试过SAS URL方法,但得到了一个错误:请求的URI不代表服务器上的任何资源。
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient
def azure_connect_sas_url(source_container_sas_url, source_container_name):
try:
blob_source_service_client = BlobServiceClient(source_container_sas_url)
source_container_client = blob_source_service_client.get_container_client(source_container_name)
print ("SAS URL -- Connected.")
return source_container_client
except Exception as ex:
print ("Error: " + str(ex))
def main():
try:
azure_sas_url = 'https://[account].blob.core.windows.net/[container]?[SAS_Token]'
container_name = 'abc/def/ghi'
## SAS URL
connection_instance = azure_connect_sas_url(azure_sas_url, container_name)
source_blob_list=connection_instance.list_blobs()
for blob in source_blob_list:
print (blob.name + 'n')
except Exception as ex:
print ('main | Error: ', ex)
if __name__ == "__main__":
main()
main |错误:请求的URI不代表服务器上的任何资源。错误代码:无效URi
代码的问题是混淆了虚拟目录路径和容器名称。容器名称已包含在您的SAS URL中。
您只需使用该SAS URL并使用from_container_url
方法创建一个ContainerClient
实例。目录路径('abc/def/ghi'(应作为参数传递给list_blobs
方法。
azure_sas_url = 'https://[account].blob.core.windows.net/[container]?[SAS_Token]'
container_client = ContainerClient.from_container_url(azure_sas_url)
source_blob_list = container_client.list_blobs(name_starts_with='abc/def/ghi')
for blob in source_blob_list:
print (blob.name + 'n')