我正在从目录之一读取文件。验证后,我需要上传带有时间戳的文件。
在将文件上传到GCS存储桶时如何重命名文件?
我正在使用Google Storage客户端。我看到对于S3,boto客户端具有一种可以传递upload_name=
参数的方法,但在GCS中看不到类似的参数。
答案 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