# 获取指定文件夹下的所有 Blob
blobs = client.list_blobs(bucket_name='your_bucket_name', prefix=folder_path)
对于GCS而言,文件夹和文件都属于Object,所以使用list_blobs,会取得该文件夹下的所有文件夹,和文件。
比如,这个文件夹叫root,有子文件夹sub_root_1是个空的,sub_root_2里面有hello.txt,那么list_blobs后的结果集就是:
/root
/root/sub_root_1
/root/sub_root_2/hello.txt
这个时候,如果循环执行blob.delete()是会报错的,因为blob.delete()只能删除文件。
所以需要过滤一下。
from google.cloud import storage
# 创建 GCS 客户端对象
client = storage.Client()
# 指定要删除的文件夹和存储桶名称
folder_name = 'your_folder_name'
bucket_name = 'your_bucket_name'
# 获取 GCS 存储桶和指定文件夹下的所有 Blob
bucket = client.get_bucket(bucket_name)
blobs = bucket.list_blobs(prefix=folder_name)
# 遍历并删除所有文件
for blob in blobs:
# 如果 Blob 的名称以 "/" 结尾,则跳过该 Blob,因为它是一个文件夹
if blob.name.endswith('/'):
continue
blob.delete()
在这个代码中,使用 blob.name.endswith('/')
来检查 Blob 的名称是否以 /
结尾。如果是,则跳过该 Blob,因为它是一个文件夹。否则,将调用 blob.delete()
方法来删除该文件。