ImportError:无法从'azure.storage.blob'导入名称'BlockBlobService'

问题描述 投票:0回答:1

我正在尝试将Azure blob容器中的文本文件从ANSI转换为UTF-8编码,而不使用python在本地下载文件。当我尝试在Python代码中导入BlockBlobService来处理Azure Blob存储时,出现以下错误。我相信我已经安装了正确的python模块,但是可能还有一些我不知道的缺少的其他模块,或者可能是“没有正确的python模块版本”。 “ pip list”命令在我的VM上显示以下内容。任何帮助都会很好。

点列表套件版本


azure-common         1.1.25
azure-core           1.4.0
azure-nspkg          3.0.2
azure-storage        0.36.0
azure-storage-blob   12.3.0
azure-storage-common 2.1.0
azure-storage-nspkg  3.1.0
bcrypt               3.1.7
certifi              2020.4.5.1
cffi                 1.14.0
chardet              3.0.4
cryptography         2.9
idna                 2.9
isodate              0.6.0
msrest               0.6.13
oauthlib             3.1.0
paramiko             2.7.1
pip                  20.0.2
pycparser            2.20
PyNaCl               1.3.0
python-dateutil      2.8.1
requests             2.23.0
requests-oauthlib    1.3.0
setuptools           41.2.0
six                  1.14.0
urllib3              1.25.8
wheel                0.34.2
python utf-8 python-import azure-blob-storage ansi
1个回答
0
投票

如果您的Blob编码不是UTF-8,则无法更改它。而且您说过要使用create_blob_from_text进行操作,所以我想您的文本文件不是UTF-8,并且您想将其更改为UTF-8来上传。

首先,您应该知道,如果您的文本文件为UTF-8,则无需更改任何内容,只需将其上传即可,它仍为UTF-8。但是,如果文件不是UTF-8,则不会将其转换为UTF-8,它将以原始编码被编码为UTF-8。如果您能理解这一点,您将知道如何使用UTF-8编码将文件上传到azure blob。

像下面一样,我上传一个编码为GBK的文本文件。

txt= open('D:/hello.txt').readline() # GBK Tex

charset = 'UTF-8'
block_blob_service.create_blob_from_text(container_name='test',blob_name='test-gbk.txt',text=txt.encode('ISO-8859-1').decode('GBK'),encoding=charset)

[下面是图片,左边是使用GBK编码的原始文件,右边是从用'UTF-8'编码的天蓝色斑点下载的文件。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.