我的主要問題是,我想檢查 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'):
我想使用 * 通配符,我該怎么做?
uj5u.com熱心網友回復:
list_blob不支持正則運算式prefix。如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
uj5u.com熱心網友回復:
簡而言之:你不能!
您只能過濾前綴。如果你想過濾后綴(如你所愿),首先過濾你可以使用 API 的最長前綴,然后在你的代碼中迭代以掃描檔案名并獲取與你的模式匹配的檔案名。
沒有內置的解決方案...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/447661.html
上一篇:JPA將屬性設定為空
