上下文是,如果存储在Google Cloud Platform中的文件为空,但是如果不为空,请按照正常的工作流程结束该过程。我正在与气流中的分支操作员一起执行此操作,但是我必须通过一个条件来确定该过程是否需要在此结束或继续。
所以我的问题是:如何获取存储在GCP存储桶中的平面文件的大小?
谢谢!
答案 0 :(得分:0)
您可以使用Google Cloud Storage Library for Python中的Blobs/Objects内置函数。
为了检查文件是否在存储桶中并且文件大小是否大于零,我创建了以下代码:
from google.cloud.storage import Blob
from google.cloud import storage
client = storage.Client()
bucket = client.bucket('bucket_name')
desired_file = "file_name.csv"
for blob in bucket.list_blobs():
if desired_file== blob.name and blob.size > 0:
print("Name: "+ blob.name +" Size blob obj: "+str(blob.size) + "bytes")
#do something
上面,list_blobs()方法用于列出指定存储桶中的所有文件。然后,我们使用blob.name
来检索文件名和blob.size
,以便以 BYTES 返回文件的大小。只需一小段代码,您就可以继续执行任务。
其他信息:如果有大量for blob in client_bucket.bucket('bucket_name') .list_blobs(prefix='test_'):
更新:
为了给特定的存储桶和对象提供更多细化的权限,可以使用Access Control Lists。它允许您根据所需的access level定义对特定存储桶和对象的访问。因此,请转到:存储>存储桶>单击文件>单击 编辑权限 (中间屏幕上方,“下载”旁边)>添加项目。然后,选择要添加的实体,例如:项目,域,组,用户,填写名称(电子邮件ID,项目,服务帐户)。 Link代表Google的“如何使用ACL”。