# 获取指定文件夹下的所有 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 存储桶和指定文件夹下的所有 Blobbucket = client.get_bucket(bucket_name)blobs = bucket.list_blobs(prefix=folder_name)# 遍历并删除所有文件for blob in blobs:# 如果 Blob 的名称以 "/" 结尾,则跳过该 Blob,因为它是一个文件夹if blob.name.endswith('/'):continueblob.delete()
在这个代码中,使用blob.name.endswith('/')
来检查 Blob 的名称是否以/
结尾。如果是,则跳过该 Blob,因为它是一个文件夹。否则,将调用blob.delete()
方法来删除该文件。