如何筛选单个GCS文件夹?解决删除时误删前缀匹配文件夹问题
精准删除GCS中指定文件夹的解决方案
问题原因
原代码使用 prefix='Sample' 会模糊匹配所有以 Sample 开头的对象路径,比如 Sample1/file.txt、Sample2/image.jpg 这类不属于目标文件夹的内容也会被误删。这是因为GCS的虚拟文件夹依赖路径中的 / 区分,不带斜杠的前缀会匹配所有前缀一致的路径。
修正代码
from google.cloud import storage storage_client = storage.Client() bucket = storage_client.get_bucket('bucket name') # 删除Sample文件夹下的所有子对象 blobs = bucket.list_blobs(prefix='Sample/') for blob in blobs: blob.delete() # 删除Sample文件夹的占位符(若存在) folder_blob = bucket.blob('Sample') if folder_blob.exists(): folder_blob.delete()
关键说明
- 精准前缀设置:用
prefix='Sample/'替代原前缀,只会匹配路径以Sample/开头的对象,也就是目标文件夹下的所有内容,不会触及Sample1、Sample2这类同名开头的其他文件夹。 - 处理文件夹占位符:GCS中手动创建的文件夹会生成一个名为
Sample的空blob(用于在控制台显示文件夹),需要单独检查并删除,否则存储桶中仍会残留空文件夹标识。
内容的提问来源于stack exchange,提问作者NMB
相关产品推荐
相关产品推荐

