Descargar un archivo del almacenamiento en la nube de Google dentro de una carpeta

Tengo una secuencia de comandos de Python que obtiene una lista de archivos que se han cargado en un depósito de almacenamiento en la nube de Google, e intenta recuperar los datos como una cadena.

El código es simplemente:

file = open(base_dir + "/" + path, 'wb') data = Blob(path, bucket).download_as_string() file.write(data) 

Mi problema es que los datos que he cargado se almacenan dentro de las carpetas en el cubo, por lo que la ruta sería algo como:

 folder/innerfolder/file.jpg 

Cuando la biblioteca de Google intenta descargar el archivo, lo obtiene en forma de una solicitud GET, que convierte la ruta anterior en:

 https://www.googleapis.com/storage/v1/b/bucket/o/folder%2Finnerfolder%2Ffile.jpg 

¿Hay alguna manera de evitar que esto suceda / descargar el archivo de esta manera? Aclamaciones.

Sí, puedes hacer esto con la biblioteca del cliente de almacenamiento de Python.

Solo instálelo con pip install --upgrade google-cloud-storage y luego use el siguiente código:

 # Initialise a client storage_client = storage.Client("[Your project name here]") # Create a bucket object for our bucket bucket = storage_client.get_bucket(bucket_name) # Create a blob object from the filepath blob = bucket.blob("folder_one/foldertwo/filename.extension") # Download the file to a destination blob.download_to_filename(destination_file_name) 

También puedes usar .download_as_string() pero como lo escribes en un archivo, la descarga directamente al archivo puede ser más fácil.

La única cosa un poco incómoda a tener en cuenta es que la ruta de archivo es la ruta que sigue al nombre del grupo, por lo que no se alinea exactamente con la ruta en la interfaz web.