How To Check If File Exists In Google Cloud Storage?
Solution 1:
This post is old, you can actually now check if a file exists on GCP using the blob class, but because it took me a while to find an answer, adding here for the others who are looking for a solution
from google.cloud import storage
name = 'file_i_want_to_check.txt'
storage_client = storage.Client()
bucket_name = 'my_bucket_name'
bucket = storage_client.bucket(bucket_name)
stats = storage.Blob(bucket=bucket, name=name).exists(storage_client)
Documentation is here
Hope this helps!
Edit
As per the comment by @om-prakash, if the file is in a folder, then the name should include the path to the file:
name = "folder/path_to/file_i_want_to_check.txt"
Solution 2:
It's as easy as use the exists method within a blob object:
from google.cloud import storage
def blob_exists(projectname, credentials, bucket_name, filename):
client = storage.Client(projectname, credentials=credentials)
bucket = client.get_bucket(bucket_name)
blob = bucket.blob(filename)
return blob.exists()
Solution 3:
The answer provided by @nickthefreak is correct, and so is the comment by Om Prakash. One other note is that the bucket_name should not include gs://
in front or a /
at the end.
Piggybacking off @nickthefreak's example and Om Prakash's comment:
from google.cloud import storage
name = 'folder1/another_folder/file_i_want_to_check.txt'
storage_client = storage.Client()
bucket_name = 'my_bucket_name' # Do not put 'gs://my_bucket_name'
bucket = storage_client.bucket(bucket_name)
stats = storage.Blob(bucket=bucket, name=name).exists(storage_client)
stats will be a Boolean (True or False) depending on whether the file exists in the Storage Bucket.
(I don't have enough reputation points to comment, but I wanted to save other people some time because I wasted way too much time with this).
Solution 4:
If you are looking for a solution in NodeJS, then here it is:
var storage = require('@google-cloud/storage')();
var myBucket = storage.bucket('my-bucket');
var file = myBucket.file('my-file');
file.exists(function(err, exists) {});
// If the callback is omitted, then this function return a Promise.
file.exists().then(function(data) {
var exists = data[0];
});
If you need more help, you can refer to this doc: https://cloud.google.com/nodejs/docs/reference/storage/1.5.x/File#exists
Solution 5:
You can use the stat function to get a files info. This will in practice do a HEAD request to google cloud storage instead of a GET, which is a bit less resource intensive.
import cloudstorage as gcs
# return stat if there is one, else None or false. A stat record should be truthy
def is_file_available(filepath):
try:
return gcs.stat(filepath)
except gcs_errors.NotFoundError as e:
return False
Post a Comment for "How To Check If File Exists In Google Cloud Storage?"