为什么我们需要打开文件才能将其上传到Azure Blob存储?

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

我是 Azure 新手,正在尝试使用其 Python SDK 将文件(数以万计)上传到 Azure blob 存储。我在网上遇到的所有示例在上传之前都会打开一个文件:

https://learn.microsoft.com/en-us/python/api/overview/azure/storage-blob-readme?view=azure-python#uploading-a-blob

https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-upload-python#upload-a-block-blob-from-a-local-file-path

为什么这是必要的?我担心这是否会减慢上传速度。

AWS S3 的 Boto3 不执行此操作。您能解释一下这背后的原因吗?

azure azure-blob-storage azure-python-sdk
1个回答
0
投票

为什么这是必要的?我担心这是否会减慢上传速度。

要上传数据,Azure Blob 存储客户端库需要一个

file-like
对象。

大文件可以快速上传,因为文件是在

chunks
中读取的。在上传之前打开文件并不一定会减慢上传过程。事实上,从类似文件的对象中读取数据比从磁盘上的文件中读取数据更有效。

代码:

with open("./SampleSource.txt", "rb") as data: 
  blob.upload_blob(data)

上面的代码打开文件,创建一个类文件对象,并将类文件对象的内容上传到 Blob 存储。

使用 Boto3 上传到 AWS S3 时适用相同的过程 - 您可以通过

upload_fileobj
使用文件对象进行上传。

代码:

with open('filename', 'rb') as data:
    s3.upload_fileobj(data, 'mybucket', 'mykey')

参考:

上传文件 - Boto3 1.34.64 文档 (amazonaws.com)

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