通过气流获取存储在存储桶中的文件大小(GCP)

时间:2020-06-26 21:27:19

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

上下文是,如果存储在Google Cloud Platform中的文件为空,但是如果不为空,请按照正常的工作流程结束该过程。我正在与气流中的分支操作员一起执行此操作,但是我必须通过一个条件来确定该过程是否需要在此结束或继续。

所以我的问题是:如何获取存储在GCP存储桶中的平面文件的大小?

谢谢!

1 个答案:

答案 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”。