如何获取云存储对象的 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 大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure blob 下载中获取 blob 下载进度
如何使用用户定义的函数获取 cassandra 的 blob 列的大小?
如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件