将文件存储到GCS存储桶时如何重命名文件

时间:2019-09-24 02:35:41

标签: python-2.7 amazon-s3 google-cloud-platform cloud

我正在从目录之一读取文件。验证后,我需要上传带有时间戳的文件。

在将文件上传到GCS存储桶时如何重命名文件?

我正在使用Google Storage客户端。我看到对于S3,boto客户端具有一种可以传递upload_name=参数的方法,但在GCS中看不到类似的参数。

2 个答案:

答案 0 :(得分:1)

您可以使用 rename_blob 获得相同的结果。

from google.cloud import storage

storage_client = storage.Client() 
bucket = storage_client.get_bucket("mybucket")
blob = bucket.blob("myfile")
blob.upload_from_filename("mynewfile")
bucket.rename_blob(blob, "mynewfile")

另一种替代方法是使用rest API,您可以在其中传递name参数。

答案 1 :(得分:0)

如果您想重命名存储桶中的现有文件。

def rename_blob(bucket_name, blob_name, new_blob_name):
    """
    Function for renaming file in a bucket buckets.

    inputs
    -----
    bucket_name: name of bucket
    blob_name: str, name of file 
        ex. 'data/some_location/file_name'
    new_blob_name: str, name of file in new directory in target bucket 
        ex. 'data/destination/file_name'
    """
    storage_client = storage.Client.from_service_account_json('creds.json')

    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(blob_name)
    new_blob = bucket.rename_blob(blob, new_blob_name)
    return new_blob.public_url