为了账号安全,请及时绑定邮箱和手机立即绑定

当您知道文件类型但不知道名称时,如何从 Azure Data Lake 下载文件?

当您知道文件类型但不知道名称时,如何从 Azure Data Lake 下载文件?

有只小跳蛙 2023-10-18 16:13:15
我可以运行以下命令来下载文件“some/path/known_name.json”def download_file():    try:        file_system_client = FileSystemClient.from_connection_string(...)        full_file_location = "some/path/known_name.json"        target_file_client = file_system_client.get_file_client(full_file_location)        download=target_file_client.download_file()        downloaded_bytes = download.readall()        local_file = open('my_file.json','wb')        local_file.write(downloaded_bytes)        local_file.close()    except Exception as e:        print(e)我的问题是:当文件名未知但文件类型已知(例如“ different/path/xxx.json”)时,如何从其他路径下载
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

您可以列出容器中的 blob,然后按 .json 扩展名过滤 json 文件blob.name

这是我的测试容器中的 blob:

https://img1.sycdn.imooc.com/652f93d7000188b502470218.jpg

这是我的Python代码:


import os, uuid

from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient


try:

    # environment variable into account.

    connect_str = os.getenv('AZURE_STORAGE_CONNECTION_STRING')


    # Create the BlobServiceClient object which will be used to create a container client

    blob_service_client = BlobServiceClient.from_connection_string(connect_str)


    # Create a unique name for the container

    container_name = "test"     


    # Create the container

    container_client = blob_service_client.get_container_client(container_name)


    # List the blobs in the container

    local_path = "./data"

    blob_list = container_client.list_blobs()

    for blob in blob_list:

        if('.json' in blob.name) :

            local_file_name = blob.name

            blob_client = blob_service_client.get_blob_client(container=container_name, blob=local_file_name)

            download_file_path = os.path.join(local_path, local_file_name)

            print("\nDownloading blob to \n\t" + local_path)

        

            with open(download_file_path, "wb") as download_file:

                download_file.write(blob_client.download_blob().readall())

            print("\t" + blob.name)


except Exception as ex:

    print('Exception:')

    print(ex)


当我运行代码时,它将下载data.json和data2.json.

https://img1.sycdn.imooc.com/652f93e40001db3301760151.jpg

查看完整回答
反对 回复 2023-10-18
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信