[英]Get file size stored (GCP) in a bucket with airflow
上下文是,如果存储在 Google Cloud Platform 中的文件为空,我需要结束该过程,但如果不是空的,请遵循正常的工作流程。 我正在使用 airflow 中的分支运算符执行此操作,但我必须通过一个条件来决定该过程是否需要在那里结束或继续。
所以我的问题是:如何获取存储在 GCP 存储桶中的平面文件的大小?
提前致谢!
您可以使用 Google Cloud Storage Library 中的Blobs/Objects内置函数,用于 Python。
为了检查文件是否在您的存储桶中并且其大小大于零,我创建了以下代码:
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_'):
更新:
为了提供更细粒度的权限,对于特定的存储桶和对象,您可以使用访问控制列表。 它允许您根据所需的访问级别定义对特定存储桶和对象的访问。 因此,go 到:存储>存储桶>单击您的文件>单击编辑权限(屏幕中上部,在下载旁边) >添加项目。 然后,select 你要添加的实体如:Project、Domain、Group、User,填写名称(email id、project、service account)。 来自 Google 的“如何使用 ACL” 链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.