1

我似乎无法捕捉到这个异常,除非通过包罗万象

from google.cloud import storage, exceptions

def gsutil_ls(bucket_name, filter=None, project_id=None):
  try:
    client = storage.Client( project=project_id )
    bucket_path = "gs://{}/".format(bucket_name)
    bucket, err = client.get_bucket(bucket_name)
    files = ["{}{}".format(bucket_path,f.name) for f in bucket.list_blobs() ]
    if filter:
      files = [f for f in files if filter in f]
    # print(files)
    return files
  except exceptions.NotFound:
    raise ValueError("ERROR: GCS bucket not found, path={}".format(bucket_path))
  except Exception as e:
    print( e)



gsutil_ls("my-bucket", project_id="my-project")

返回:

400 GET https://www.googleapis.com/storage/v1/b/my-bucket?projection=noAcl: Invalid bucket name: 'my-bucket'

见:https ://googlecloudplatform.github.io/google-cloud-python/latest/storage/client.html#google.cloud.storage.client.Client.get_bucket

4

1 回答 1

2

在这种情况下,对于:

400 GET https://www.googleapis.com/storage/v1/b/my-bucket?projection=noAcl: Invalid bucket name: 'my-bucket'

利用exceptions.Forbidden

  try:
     [...]
  except exceptions.Forbidden:
    raise ValueError("ERROR: GCS bucket not found, path={}".format(bucket_path))
于 2018-02-09T06:20:21.127 回答