google-cloud-storage

How to create a Blob from a Google Cloud Storage URL in Python


I have a blob created using the google cloud storage API, and have saved its path using blob.path. The path is of the form

/b/bucketname/o/some%2Fobject%2Fid

How do I recreate the blob from this URL?


Solution

  • It's unfortunate that the GCS API doesn't provide a factory method to go from the path URL back to a blob, since saving blob paths in databases etc. is quite common.

    Here is a factory method that allows you to go from a blob.path back to a blob:

    def blob_from_blobpath(blob_path):
      import google.cloud.storage as gcs
      blob_path = blob_path[3:] # /b/
      slash_loc = blob_path.index('/')
      bucket_name = blob_path[:slash_loc]
      blob_name = blob_path[(slash_loc+3):] # /o/
      bucket = gcs.Client().get_bucket(bucket_name)
      return bucket.blob(blob_name)