我的主要问题是,我想检查gcp中是否存在对象。所以,我尝试了
from google.cloud import storage
client = storage.Client()
path_exists = False
for blob in client.list_blobs('models', prefix='trainedModels/mddeep256_sarim'):
path_exists = True
break
它对我来说效果很好。但现在的问题是,我不知道型号名称是mddeep256,但我知道_sarim的其他部分
所以,我想使用类似的东西
for blob in client.list_blobs('models', prefix='trainedModels/*_sarim'):
我想使用*通配符,我该怎么做?
list_blob
不支持prefix
中的regex。正如Guilaume所说,你需要自己过滤。
以下内容应该有效。
def is_object_exist(bucket_name, object_pattern):
from google.cloud import storage
import re
client = storage.Client()
all_blobs = client.list_blobs(bucket_name)
regex = re.compile(r'{}'.format(object_pattern))
filtered_blobs = [b for b in all_blobs if regex.match(b.name)]
return True if len(filtered_blobs) else False
简而言之:你不能!
您只能根据前缀进行筛选。如果您想过滤后缀(根据您的意愿(,首先过滤API可以使用的最长前缀,然后在代码中迭代以扫描文件名并获得与您的模式匹配的文件名。
没有为此构建il解决方案。。。