当Blob网址中包含“ En Dash”(–)时,copy_blob函数失败

时间:2019-07-09 13:43:28

标签: python azure azure-storage-blobs python-3.7 azure-blob-storage

我需要将带有破折号“ Depot – Week.xlsx”的文件复制到其他Blob存储位置(容器)。

block_blob_serviceBlockBlobService类(azure.storage.blob.blockblobservice)的对象

下面的代码段:

block_blob_service.copy_blob(archive_container, "pleasegodpleaseplease.xlsx",                                                         "https://dapblobstorage.blob.core.windows.net/daps3blob/kuldeep/Depot – Week.xlsx")

我遇到以下错误-

  

Client-Request-ID = 9e183a7e-a​​24d-11e9-9423-f48e389d3b95重试策略不允许重试:,HTTP状态码=未知,异常=拉丁-1。
  归档文件失败:latin-1

1 个答案:

答案 0 :(得分:1)

仅作为评论和我的其他内容的摘要。

有一个官方文档Naming and Referencing Containers, Blobs, and Metadata介绍了容器或Blob名称中不能使用的字符。要解决此问题,常见的解决方案是使用UTF-8 / URL编码器对名称或url进行编码。

在Python中,代码如下所示,并解决了一些:/等特殊字符的问题,无需使用功能urllib.parse.quote使用参数{{1 }}。

enter image description here

safe

注意:破折号(-)可以用作容器和blob的名称,

  

每个破折号(-)字符必须紧随其后   字母或数字;容器中不允许连续的破折号   名称。

,但不能在容器名称中使用空格字符,而必须在blob名称及其网址中进行编码。