OSS不支持直接對文件(Object)進行重命名。如果您需要在同一個Bucket內對Object進行重命名,您可以通過CopyObject接口將源Object拷貝至目標Object,然后通過DeleteObject接口刪除源Object。
注意事項
本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地域的其他阿里云產品訪問OSS,請使用內網Endpoint。關于OSS支持的Region與Endpoint的對應關系,請參見OSS地域和訪問域名。
本文以從環境變量讀取訪問憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
本文以OSS域名新建OSSClient為例。如果您希望通過自定義域名、STS等方式新建OSSClient,請參見初始化。
示例代碼
以下代碼用于將examplebucket下的srcobject.txt重命名為destobject.txt。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# examplebucket填寫存儲空間名稱。
bucket_name = 'examplebucket'
bucket = oss2.Bucket(auth, endpoint, bucket_name, region=region)
# 填寫不包含Bucket名稱在內源Object的完整路徑,例如srcobject.txt。
src_object_name = 'srcobject.txt'
# 填寫不包含Bucket名稱在內目標Object的完整路徑,例如destobject.txt。
dest_object_name = 'destobject.txt'
# 將examplebucket下的srcobject.txt拷貝至同一Bucket下的destobject.txt。
result = bucket.copy_object(bucket_name, src_object_name, dest_object_name)
# 查看返回結果的狀態。如果返回值為200,表示執行成功。
print('result.status:', result.status)
# 刪除srcobject.txt。
result_del = bucket.delete_object(src_object_name)
# 查看返回結果的狀態。如果返回值為204,表示執行成功。
print('result.status:', result_del.status)
說明
OSS也不支持直接對目錄進行重命名。如果需要重命名目錄,您可以參考以上示例對該目錄下的子目錄和Object逐個進行重命名操作。
相關文檔
關于重命名文件涉及的API接口說明,請分別參見CopyObject和DeleteObject。
文檔內容是否對您有幫助?