Renaming files on Google Cloud Storage using Python
Start your free 7-days trial now!
Prerequisites
To follow along with this guide, please make sure to have:
created a service account and downloaded the private key (JSON file) for authentication (please check out my detailed guide)
installed the Python client library for Google Cloud Storage:
pip install --upgrade google-cloud-storage
Renaming a file on Google Cloud Storage
To rename files on Google Cloud Storage (GCS) using Python, use the bucket's rename_blob(~)
method:
from google.cloud import storage
# Authenticate ourselves using the primary key of the service accountpath_to_private_key = './gcs-project-354207-099ef6796af6.json'client = storage.Client.from_service_account_json(json_credentials_path=path_to_private_key)
bucket = storage.Bucket(client, 'example-bucket-skytowner')# The current name of the file on GCSblob = bucket.blob('uploaded_sample.txt')# The new name of the file on GCSbucket.rename_blob(blob, new_name='renamed_sample.txt')
Note that if the blob file you are referencing does not exist, then an error will be thrown:
blob = bucket.blob('file_that_does_not_exist.txt')# The new name of the file on GCSbucket.rename_blob(blob, new_name='renamed_sample.txt')
NotFound: 404 POST No such object: example-bucket-skytowner/file_that_does_not_exist.txt
We can handle such scenarios by using the following try-except
pattern:
from google.cloud.exceptions import NotFound
try: blob = bucket.blob('non_existing_file.txt') blob.delete()except NotFound: print(f'🚨 {blob.name} does not exist - do something')
🚨 non_existing_file.txt does not exist - do something
Here, the NotFound
exception is imported from google.cloud.exceptions
.
Behind the scenes, to rename a file, GCS actually first deletes the file, and then creates a new file with the new name. Therefore, when the storage class is NEARLINE
, COLDLINE
or ARCHIVE
, then extra deletion charges are incurred for renaming operations.