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。