如何在Jupyter Notebook中列出GCS桶中匹配指定模式的文件/对象?
解决GCS桶中匹配通配符模式列出文件的问题
问题原因
GCS的prefix参数仅支持前缀精确匹配,不识别*这类通配符。你之前设置prefix='MY_FILES_*.model',会把整串当作前缀去查找,自然匹配不到MY_FILES_0.model这类文件。
两种可行解决方案
方案1:前缀过滤+本地模式匹配(兼容所有SDK版本)
先通过前缀筛选出范围更小的对象集合,再用Python的fnmatch模块做本地模式匹配,适合复杂模式场景:
from google.cloud import storage import fnmatch # 初始化GCS客户端与桶实例 client = storage.Client() bucket = client.get_bucket('你的桶名称') # 获取所有前缀为MY_FILES_的对象 blobs = bucket.list_blobs(prefix='MY_FILES_') # 筛选符合MY_FILES_*.model模式的对象 matching_files = [blob.name for blob in blobs if fnmatch.fnmatch(blob.name, 'MY_FILES_*.model')] # 输出结果 for file_name in matching_files: print(file_name)
方案2:使用SDK内置的match_glob参数(推荐,需SDK版本≥2.0.0)
从google-cloud-storage 2.0.0版本开始,list_blobs方法支持match_glob参数,可直接传入通配符模式,由GCS服务端完成过滤,效率更高:
from google.cloud import storage client = storage.Client() bucket = client.get_bucket('你的桶名称') # 直接通过match_glob指定匹配模式 matching_blobs = bucket.list_blobs(match_glob='MY_FILES_*.model') # 遍历输出匹配的文件名 for blob in matching_blobs: print(blob.name)
如果你的SDK版本低于2.0.0,执行以下命令升级:
pip install --upgrade google-cloud-storage
内容的提问来源于stack exchange,提问作者user3448011
相关产品推荐
相关产品推荐

