2
votes

I am using google cloud storage python API. I came across a situation where I need to delete a folder that might have hundred of files using API. Is there an efficient way to do it without making recursive and multiple delete call?

One solution that I have is to list all blob objects in the bucket with given path prefix and delete them one by one.

The other solution is to use gsutil:

$ gsutil rm -R gs://bucket/path

2
Combine list_blobs with delete_blobs - leo9r

2 Answers

3
votes

Try something like this:

bucket = storage.Client().bucket(bucket_name)
blobs = bucket.list_blobs()
while True:
    blob = blobs.next()
    if not blob: break
    if blob.name.startswith('/path'): blob.delete()

And if you want to delete the contents of a bucket instead of a folder within a bucket you can do it in a single method call as such:

bucket = storage.Client().bucket(bucket_name)
bucket.delete_blobs(bucket.list_blobs())
2
votes
from google.cloud import storage

def deleteStorageFolder(bucketName, folder):
        """
        This function deletes from GCP Storage

        :param bucketName: The bucket name in which the file is to be placed
        :param folder: Folder name to be deleted
        :return: returns nothing
        """
        cloudStorageClient = storage.Client()
        bucket = cloudStorageClient.bucket(bucketName)
        try:
            bucket.delete_blobs(blobs=bucket.list_blobs(prefix=folder))
        except Exception as e:
            print str(e.message)

In this case folder = "path"