【问题标题】:Azure Blob Using Python使用 Python 的 Azure Blob
【发布时间】:2021-04-27 07:10:35
【问题描述】:

我正在访问一个允许我下载 CSV 文件的网站。我想将 CSV 文件直接存储到 blob 容器中。我知道一种方法是在本地下载文件然后上传文件,但我想跳过在本地下载文件的步骤。有没有办法可以实现这一点。

我尝试了以下方法:

block_blob_service.create_blob_from_path('containername','blobname','https://*****.blob.core.windows.net/containername/FlightStats',content_settings=ContentSettings(content_type='application/CSV'))

但我不断收到错误提示找不到路径。 任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: python-3.x selenium-webdriver selenium-chromedriver azure-functions azure-blob-storage


    【解决方案1】:

    create_blob_from_path中的file_path是你本地文件的路径,看起来像“C:\xxx\xxx”。此路径('https://*****.blob.core.windows.net/containername/FlightStats')是 Blob URL。

    您可以将文件下载到字节数组或流中,然后使用create_blob_from_bytescreate_blob_from_stream 方法。

    【讨论】:

      【解决方案2】:

      其他答案使用所谓的“Azure SDK for Python legacy”。


      我建议如果它是全新的实现,则使用 Gen2 存储帐户(而不是 Gen1 或 Blob 存储)。

      对于 Gen2 存储帐户,请参阅example here

      from azure.storage.filedatalake import DataLakeFileClient
      
      data = b"abc"
      file = DataLakeFileClient.from_connection_string("my_connection_string",
                                                       file_system_name="myfilesystem", file_path="myfile")
      
      file.append_data(data, offset=0, length=len(data))
      file.flush_data(len(data))
      

      这很痛苦,如果您要多次附加,那么您必须在客户端跟踪 offset

      【讨论】:

        猜你喜欢
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-30
        • 1970-01-01
        • 2021-06-01
        相关资源
        最近更新 更多