如何获取云存储对象的 blob 大小?

Posted

技术标签:

【中文标题】如何获取云存储对象的 blob 大小?【英文标题】:How to get the blob size of Cloud Storage object? 【发布时间】:2019-06-25 05:10:05 【问题描述】:

我可以从gsutil 获得尺寸。

✗ gsutil du gs://<bucket>/test/1561402306
100          gs://<bucket>/test/1561402306

我可以通过download_as_string 确认长度和内容。但是,size 属性始终从 SDK/API 返回 None

如何在不下载的情况下获取 Cloud Storage 对象的大小?

from google.cloud import storage

client = storage.Client()
bucket = client.get_bucket(bucket_name)
blob = bucket.blob(blob_name)
print(len(blob.download_as_string().decode()))
print(blob.size)

输出:

100
None

【问题讨论】:

【参考方案1】:

要获取对象的元数据,您应该在检索 blob 时使用方法“get_blob”。

我已经像这样编辑了你的代码:

from google.cloud import storage

client = storage.Client()
bucket = client.get_bucket(bucket_name)
blob = bucket.get_blob(blob_name) #here you use the method get_blob
print(len(blob.download_as_string().decode()))
print(blob.size)

您现在可以访问对象的大小,还可以访问其他元数据,有关它的更多信息,请查看documentation。

【讨论】:

【参考方案2】:

您必须使用 get_blob() 来获取 blob blob = bucket.get_blob(blob_name) 而不是 bucket.blob(),它是 blob 对象的工厂构造函数。

看看get_blob()和blob()这两个函数的区别。

【讨论】:

以上是关于如何获取云存储对象的 blob 大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何限制 ASA 输出中的 blob 存储文件大小

如何在 Azure blob 下载中获取 blob 下载进度

在PostgreSQL查询中获取大对象的大小?

如何使用用户定义的函数获取 cassandra 的 blob 列的大小?

如何获取 Blob 存储中容器中所有文件夹的列表?

如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件