【问题标题】:Python Script to Return Blob File URI返回 Blob 文件 URI 的 Python 脚本
【发布时间】:2020-08-04 21:49:54
【问题描述】:

我正在寻求有关在 Python 中运行的脚本的帮助,该脚本将访问 Azure 中预先存在的 blob,并返回将在此 blob 中的单个文件的整个 URI。

我尝试了一些方法,但它们对于当前的库来说太旧了,或者运行时无法连接。

我是一个初学者,所以任何帮助唤醒我的帮助将不胜感激。这是我正在尝试的,但我确信这都是错误的

import os, uuid
import azure.storage.blob

 self.blob_type = _BlobTypes.BlockBlob
    super(BlockBlobService, self).test(
    account_name=Account_Name,
    account_key='Account key',
    sas_token=None, 
    is_emulated=False, 
    protocol='https', 
    endpoint_suffix='core.windows.net', 
    custom_domain=None, 
    request_session=None, 
    connection_string=None, 
    socket_timeout=None, 
    token_credential=None)
get_block_list(
    ContainerName,
    BlobName,
    snapshot=None,
    block_list_type=None,
    lease_id=None,
    timeout=None)

【问题讨论】:

  • 请编辑您的问题并包含您编写的代码以及您在使用该代码时遇到的问题。
  • @GauravMantri 完成。对此感到抱歉。

标签: azure azure-functions azure-blob-storage


【解决方案1】:

根据您的描述,假设您想要获取 blob url 并且阻止列表未提交。如果是,您可以使用make_blob_url 方法来实现它,即使blob 不存在,这也可以检索blob url。

下面是我的测试代码,首先我创建了block_list但未提交,这可以获得blob url,但是即使你可以获得blob url,这个url是不可访问的,因为blob不存在。

我使用azure-storage-blob==2.1.0

from azure.storage.blob import BlockBlobService, PublicAccess,ContentSettings,BlockListType,BlobBlock
connect_str ='connection string'
block_blob_service = BlockBlobService(connection_string=connect_str)
containername='test'
blobname='abc-test.txt'

block_blob_service.put_block(container_name=containername,blob_name=blobname,block=b'AAA',block_id=1)
block_blob_service.put_block(container_name=containername,blob_name=blobname,block=b'BBB',block_id=2)
block_blob_service.put_block(container_name=containername,blob_name=blobname,block=b'CCC',block_id=3)

block_list=block_blob_service.get_block_list(container_name=containername,blob_name=blobname,block_list_type=BlockListType.All)
uncommitted = len(block_list.uncommitted_blocks) 
print(uncommitted)

exists=block_blob_service.exists(container_name=containername,blob_name=blobname)
print(exists)

blob_url=block_blob_service.make_blob_url(container_name=containername,blob_name=blobname)
print(blob_url)
block_list = [BlobBlock(id='1'), BlobBlock(id='2'), BlobBlock(id='3')]

block_blob_service.put_block_list(container_name=containername,blob_name=blobname,block_list=block_list)

exists=block_blob_service.exists(container_name=containername,blob_name=blobname)
print(exists)

blob_url=block_blob_service.make_blob_url(container_name=containername,blob_name=blobname)
print(blob_url)

希望这是您想要的,如果您还有其他问题,请随时告诉我。

【讨论】:

  • 如果你能分享我需要的库的顶部代码,以及如何初始化那会很棒。只需编辑或替换您的帐户特定信息。另外,我知道我想从中获取信息的 Blob 的名称。
  • @Cecil Ware,我更新了代码,使用azure-storage-blob==2.1.0应该和你的一样都是v2 sdk。
  • @Cecil Ware,有更新吗?如果这可以帮助你,你可以接受它作为答案。meta.stackexchange.com/a/5235
  • 感谢@George Chen,工作完美!!
猜你喜欢
  • 2011-05-15
  • 2020-10-07
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 2016-12-25
  • 2016-03-14
相关资源
最近更新 更多