代码之家  ›  专栏  ›  技术社区  ›  aBlaze

仅使用python而不是整个blob检索部分Azure文本blob

  •  0
  • aBlaze  · 技术社区  · 6 年前

    这是我的应用程序用来检索Azure文本blob的python函数。 Here is the documentation 对于 gen_blob_to_text 函数(单击页面时,按ctrl+f并搜索函数名称)。

    def get_text_blob(self, archive_url):
        container, archive_location = paths.extract_url_elements(archive_url)
    
        blob = None
        try:
            blob = self.blob_service.get_blob_to_text(container_name = container,
                                                      blob_name = archive_location)
            self.logger.debug('Retrieved ' + archive_url)
        except:
            self.logger.error('Failed to retrieve text blob {} {}'.format(archive_url, traceback.format_exc()))
    
        return blob
    

    运行此函数并获取 blob 对象返回(在我的例子中是一些HTML内容),如果我在Visual Studio 2017中检查它,我会得到以下不完整的blob文本,如 ...

    enter image description here

    我的问题是:如何获取全文blob而不是其中的一部分?我做错什么了?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Jay Gong    6 年前

    我不能在我这边重复你的问题。我通过以下代码成功获取blob内容:

    from azure.storage.blob import (
        BlockBlobService
    )
    
    accountName = "***"
    accountKey = "***"
    containerName = "test1"
    
    blobService = BlockBlobService(account_name=accountName, account_key=accountKey)
    
    blobContent = blobService.get_blob_to_text(containerName,"storage.html")
    
    print(blobContent.content)
    

    我尝试在文本可视化工具中对其进行调试,如果拖动适当的窗口,它就可以完全显示出来。

    enter image description here

    希望对你有帮助。

        2
  •  1
  •   aBlaze    6 年前

    代码似乎工作正常,但Visual Studio的文本可视化工具是导致截断的原因,如中所述。 this Stack Overflow answer . 我可以确认这一点,因为如果我将blob的内容打印到控制台,那么所有的HTML都会被打印出来。

    似乎有些版本的Visual Studio执行截断,而其他版本则不执行截断(如Jay的回答中所示,他的Visual Studio文本可视化工具显示了blob的全部内容;同时在我的文本可视化工具中,我只看到了部分字符串)。