如何获取Cloud Storage对象的Blob大小?

时间:2019-06-25 05:10:05

标签: python google-cloud-platform google-cloud-storage google-cloud-python

我可以从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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

请注意get_blob()blob()这两个函数之间的区别。