如何用Python删除GCP Storage中以example开头的文件?
删除GCP存储桶中以指定前缀开头的文件
原代码的问题点
bucket.list_blobs()返回的是迭代器,第一次用列表推导式遍历后,迭代器就会耗尽,后续无法再调用- 错误使用
blobs.blob(file),blob()是Bucket对象的方法,正确写法是bucket.blob(file) - 打印语句里的
blob_name未定义,执行时会触发报错
修复后的基础版本代码
# 重新获取blob迭代器,避免遍历后耗尽 blobs = bucket.list_blobs() file_list = [file.name for file in blobs if file.name.startswith('example')] print(file_list) for file_name in file_list: blob = bucket.blob(file_name) blob.delete() print(f"Blob {file_name} deleted.")
更高效的推荐写法
无需遍历全部文件,直接用list_blobs的prefix参数过滤目标对象,大幅提升效率:
# 只获取以example开头的blob对象 for blob in bucket.list_blobs(prefix='example'): # 可选:排除以/结尾的伪目录对象(GCP无真实目录,这类对象仅用于模拟目录结构) if not blob.name.endswith('/'): blob.delete() print(f"Blob {blob.name} deleted.")
补充说明
prefix='example'会精准匹配所有名称以example开头的存储对象,完全覆盖你要删除example-2022-12-07、example-2022-12-08这类文件的需求- 如果不需要排除伪目录,可以去掉
if not blob.name.endswith('/')这一行
内容的提问来源于stack exchange,提问作者Ajay k
相关产品推荐
相关产品推荐

