我正在尝试将Azure blob容器中的文本文件从ANSI转换为UTF-8编码,而无需使用python在本地下载这些文件。当我尝试在Python代码中导入BlockBlobService以处理Azure Blob存储时,出现以下错误。我相信我已经安装了正确的python模块,但是可能还缺少一些我不知道的模块,或者可能是“没有正确的python模块版本”。“pip list”命令在我的虚拟机上显示以下内容。这方面的任何帮助都会很好
pip list Package Version
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
Azure存储blob,版本:12.3.0是包含BlobServiceClient而不是BlockBlobsService的最新版本,因此,如果要使用BlockBlobsService,必须将Azure存储blob版本指定为2.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
的文本文件下面是图片,左边是用
GBK
编码的原始文件,右边是从azure blob下载的文件,它用“UTF-8”编码更新:我将文本文件打开到
BytesIO
,然后用下面的代码上传它。您可以忽略latin-1
相关问题 更多 >
编程相关推荐