使用 python 从 azure 容器本地下载所有 blob 文件

2023-11-24

我在 Visual Studio 中使用 python 3.6,我想从我的 azure 容器下载单个文件夹中的所有 blob 文件。这是我的代码,但问题是,它在文件夹中下载 1 个 blob 文件,然后在下载第二个文件时,它会覆盖第一个文件,最后我的本地文件夹中只有最后一个 blob。如何一次将所有 blob 文件下载到一个文件夹中?

from azure.storage.blob import BlockBlobService
block_blob_service = BlockBlobService(account_name=ACCOUNT_NAME, account_key=ACCOUNT_KEY)

generator = block_blob_service.list_blobs(CONTAINER_NAME)
        for blob in generator:
            block_blob_service.get_blob_to_path(CONTAINER_NAME, blob.name, LOCAL_FILE)

根据我的理解,我认为有两种解决方案可以满足您的需求。

  1. 从容器中下载所有 blob,并通过该方法将这些 blob 内容写入单个文件get_blob_to_bytes or get_blob_to_stream,请参阅我的示例代码如下。

    from azure.storage.blob import BlockBlobService
    
    block_blob_service = BlockBlobService(account_name=ACCOUNT_NAME, account_key=ACCOUNT_KEY)
    
    generator = block_blob_service.list_blobs(CONTAINER_NAME)
    
    fp = open('<your-local-file-name>', 'ab')
    
    for blob in generator:
        # Using `get_blob_to_bytes`
        b = service.get_blob_to_bytes(container_name, blob.name)
        fp.write(b.content)
        # Or using `get_blob_to_stream`
        # service.get_blob_to_stream(container_name, blob.name, fp)
    
    fp.flush()
    fp.close()
    
  2. 从容器中下载所有 blob,并通过以下方法将这些 blob 写入 zip 文件get_blob_to_bytes,请参阅下面我的示例代码。

    from azure.storage.blob import BlockBlobService
    import zipfile
    
    block_blob_service = BlockBlobService(account_name=ACCOUNT_NAME, account_key=ACCOUNT_KEY)
    
    generator = block_blob_service.list_blobs(CONTAINER_NAME)
    
    zf = zipfile.ZipFile(CONTAINER_NAME+'.zip', 
                 mode='w',
                 compression=zipfile.ZIP_DEFLATED, 
                 )
    
    for blob in generator:
        b = service.get_blob_to_bytes(container_name, blob.name)
        zf.writestr(blob.name, b.content)
    
    zf.close()
    

希望能帮助到你。如有任何疑问,请随时告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 从 azure 容器本地下载所有 blob 文件 的相关文章

随机推荐

  • String.format() 抛出 FormatFlagsConversionMismatchException

    这段代码在 Java 1 6 中运行良好 public static String padLeft String s int n if n lt 0 return s int noOfSpaces n 2 String output noO
  • 无法在 compose 中使用服务名称从 (fluidd) logdriver 登录

    我在 docker 中有以下设置 应用程序 httpd Fluentd 弹性搜索 Kibana 应用程序的日志驱动程序的配置正在描述 fluidd 容器 日志将保存在 ES 中并显示在 Kibana 中 当日志驱动程序配置如下时 它可以工作
  • Android Material:状态栏颜色不会改变

    我正在开发一个简单的应用程序来测试材料设计 我在用着com android support appcompat v7 21 0 0我的活动如下所示 public class MyActivity extends ActionBarActiv
  • 双击可编辑内容

    我有一个p用一些文字标记 我正在努力做到这一点contenteditable但仅限于双击 如何防止浏览器在单击 p 时将光标放在 p 上 而仅在双击时才这样做 jQuery p dblclick function e p css curso
  • 使用传单库在弹出窗口中绘制条形图

    快速提问 我在 sql server 中有一些数据 我已将其加载到 RStudio 中 我已经为数据制作了条形图 现在我正在使用传单库 并使用纬度和经度在地图上绘制一个点 我希望能够在用户单击该点时使用弹出窗口在其中显示条形图 条形图代码
  • 如何在 PHP 中创建 REST API? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我一直在开发游戏网站 并计
  • Java 的类型参数通配符到底意味着什么? Foo 和 Foo 之间的真正区别是什么?

    对于通用接口 public interface Foo
  • 如何在环境变量PATH中搜索并替换字符串?

    是否有任何命令可以批量搜索并替换环境变量中的字符串PATH 例如环境变量的内容PATH is C windows system32 C windows C windows System32 Wbem C windows System32 W
  • iPhone 上“unsigned int”和“int”之间的性能有区别吗?

    或者重新表述这个问题 使用无符号值是否会降低性能 一般来说 iPhone ARM 处理器上性能最高的类型 16 位签名 32 位签名 等 是什么 这总是取决于 For 循环将有符号整数作为计数器和限制会快一点 因为在 C 中编译器可以自由地
  • 命名空间图像和编辑日志

    摘自 Hadoop 权威指南 在主题下名称节点和数据节点其中提到 namenode 管理文件系统名称空间 它保持了 文件系统树以及所有文件和目录的元数据 那个树 该信息永久保存在本地磁盘上 两个文件的形式 命名空间图像和编辑日志 辅助名称节
  • 使用 JENA 的参数化 SPARQL 查询

    我正在尝试使用 Jena 框架 JSP 和 JAVA 构建一个小型语义 Web 应用程序 我有一个远程 SPARQL 端点 并且已经编写了一个运行良好的简单查询 但现在我需要使用一些参数 到目前为止 这是我的代码 final static
  • Angular 2、DomSanitizer、bypassSecurityTrustHtml、SVG

    我一直在 html 字符串中使用 DomSanitizer 和 SVG 在当前版本的 Angular 之前 这工作得很好 this domSanitizer bypassSecurityTrustHtml content 现在我正在取回一个
  • 关闭 django-allauth 中的用户社交注册?

    我注意到查看 django allauth 模板时 当用户注册关闭或禁用时 可以将用户重定向到 signup close html 熟悉该模块的人是否知道是否可以在 settings py 中设置预先配置的设置来关闭通过现有社交应用程序的新
  • 在发送请求之前更改图像的 src

    我对这个问题做了很多研究 但没有成功 本质上我想做的是 1 将所有图像的 src 属性替换为占位符 例如 blank gif 2 添加带有原始图像位置的 HTML5 data original 属性 3 Lazyload图像 需要 data
  • Windows cmd echo / pipeline 在末尾添加额外的空间 - 如何修剪它?

    我正在编写一个执行命令行应用程序的脚本 该应用程序需要用户在运行时输入 遗憾的是未提供命令行参数 所以我的第一次尝试是这样的 echo off echo N echo dp0 SomeOther Directory echo Y call
  • 为什么 System.Int32 占用 24 个字节?

    If an int占用4个字节 为什么System Int32将整数装箱到对象中时需要 24 个字节 例如 int i 3 object o i 在 C CLR 中 引用类型有一定规模的开销 托管对象的布局非常简单 托管对象包含实例数据 指
  • 确定 Web http 身份验证方法

    如何确定 REST Web 服务是否使用 Basic Kerberos NTLM 还是许多其他身份验证方法之一 当您发送未经身份验证的请求时 服务必须响应 HTTP 1 1 401 Unauthorized 并且响应包含WWW Authen
  • 在mathematica中选择特定的符号定义(而不是转换规则)

    我有以下问题 f 1 1 f 2 2 f 0 dvs DownValues f 这给出了 dvs HoldPattern f 1 gt 1 HoldPattern f 2 gt 2 HoldPattern f gt 0 我的问题是我只想提取
  • Document.createElementNS() 的 jQuery 是什么?

    Document createElementNS 的 jQuery 是什么 function emleGraphicToSvg aGraphicNode var lu function luf aPrefix switch aPrefix
  • 使用 python 从 azure 容器本地下载所有 blob 文件

    我在 Visual Studio 中使用 python 3 6 我想从我的 azure 容器下载单个文件夹中的所有 blob 文件 这是我的代码 但问题是 它在文件夹中下载 1 个 blob 文件 然后在下载第二个文件时 它会覆盖第一个文件