You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure Blob容器中批量下载指定名称的文件

可选解决方案

下面提供3种经过验证的可行方案,可根据你的技术栈选择:

方案1:AzCopy批量下载(优先推荐,性能最优)

你之前对AzCopy的能力有误解,它原生支持从本地文本文件读取批量文件名列表,完全可以支撑300个文件的下载需求,不需要逐个传入文件名参数:

  • 第一步:将本地300个文件名的清单保存为纯文本文件filelist.txt,每个文件名单独占一行,不需要额外加容器前缀、存储账户前缀等内容
  • 第二步:执行如下AzCopy命令即可完成批量下载:
    # 中国区Azure使用该命令
    azcopy copy "https://<你的存储账户名>.blob.core.chinacloudapi.cn/<目标容器名>/" "<本地下载保存目录的绝对路径>" --list-of-files ./filelist.txt
    
    # 海外Azure使用该命令
    azcopy copy "https://<你的存储账户名>.blob.core.windows.net/<目标容器名>/" "<本地下载保存目录的绝对路径>" --list-of-files ./filelist.txt
    
  • 注意:如果容器不是公开访问,你可以将SAS令牌直接拼接在容器URL末尾即可,命令会自动并发下载所有清单内的文件,耗时远低于手动循环实现。

方案2:PowerShell实现(适合Windows生态工作流)

如果需要和现有PowerShell自动化流程集成,可以使用Az.Storage模块实现:

  • 首先安装依赖模块(已安装可跳过):
    Install-Module -Name Az.Storage -Force -AllowClobber
    
  • 登录Azure账户(中国区需要加环境参数):
    # 中国区登录
    Connect-AzAccount -Environment AzureChinaCloud
    # 海外区登录
    Connect-AzAccount
    
  • 执行批量下载脚本:
    # 读取本地文件名清单
    $targetFileList = Get-Content -Path "./filelist.txt"
    # 初始化存储账户上下文,也可以用SAS令牌初始化
    $storageCtx = New-AzStorageContext -StorageAccountName "<你的存储账户名>" -StorageAccountKey "<你的存储账户访问密钥>"
    # 循环下载目标文件
    foreach ($fileName in $targetFileList) {
        Get-AzStorageBlobContent -Container "<目标容器名>" -Blob $fileName -Destination "<本地保存目录路径>" -Context $storageCtx -Force
    }
    
  • 可选优化:如果需要提升下载速度,可以将串行循环改为并行任务执行,300个文件量级串行执行也可在数分钟内完成。

方案3:Python实现(适合自定义扩展需求)

如果需要在下载前后加入自定义业务逻辑,可以使用Azure官方Python SDK实现:

  • 先安装依赖库:
    pip install azure-storage-blob
    
  • 示例代码:
    from azure.storage.blob import BlobServiceClient
    
    # 初始化客户端
    blob_service_client = BlobServiceClient.from_connection_string("<你的存储账户连接字符串>")
    container_client = blob_service_client.get_container_client("<目标容器名>")
    
    # 读取本地文件名清单
    with open("./filelist.txt", "r", encoding="utf-8") as f:
        target_files = [line.strip() for line in f if line.strip()]
    
    # 批量下载
    save_dir = "<本地保存目录路径>"
    for file_name in target_files:
        blob_client = container_client.get_blob_client(file_name)
        with open(f"{save_dir}/{file_name}", "wb") as f:
            f.write(blob_client.download_blob().readall())
    

内容的提问来源于stack exchange,提问作者John Bull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:36:04