我正在尝试构建DAG,该DAG首先检查Google Cloud Storage中是否存在给定的路径/ blob。该Blob是包含一些RAW数据的Blob,而不是安装在Composer worker中的Blob。
或者,可以方便地一次性查看它是否存在并包含文件(列表> 1),但是恢复存在已经是一件好事了。
到目前为止,我尝试通过bash命令同时使用gsutil统计信息,google.cloud.storage库和gcs_hook均无济于事。他们都为我确定存在的文件夹返回False
def check_folder(templates_dict,**kwargs):
bucket = 'bucketname'
blob_name = templates_dict['blob_name']
# Blob name is something along the lines of '2019-04-10/11/'
gcs = GoogleCloudStorageHook()
flag = gcs.exists(bucket,blob_name)
if flag:
print(flag)
return('this_is_true')
else:
print(flag)
return('this_is_not_true')
对于给定的blob_name,我非常确定存在,我期望为true,但始终返回False。知道发生了什么吗?谢谢!
答案 0 :(得分:4)
exists
中的GoogleCloudStorageHook
函数检查对象,并且不支持使用前缀。如果要检查给定前缀中是否有任何数据,则可以使用list
函数。
示例:
if bool(hook.list(bucket, prefix=prefix)):
print('some data is in my folder!')
您可能还想检查传感器GoogleCloudStoragePrefixSensor的实现,因为它与您所做的非常相似。