全部产品
Search
文档中心

Object Storage Service:Ganti Nama File (Python SDK V2)

更新时间:Nov 09, 2025

OSS tidak mendukung penggantian nama objek secara langsung. Untuk mengganti nama objek dalam bucket yang sama, salin objek sumber ke objek tujuan dengan nama baru menggunakan operasi CopyObject.

Catatan

  • Kode contoh dalam topik ini menggunakan titik akhir publik Wilayah China (Hangzhou) (cn-hangzhou) sebagai contoh. Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang Wilayah OSS dan titik akhir yang sesuai, lihat Wilayah OSS dan titik akhir.

Kode Contoh

Ganti nama file menggunakan metode salinan sederhana (CopyObject)

Anda dapat menggunakan metode salinan sederhana CopyObject untuk mengganti nama file.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh objek salinan")

# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Ini adalah parameter yang diperlukan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket tujuan. Ini adalah parameter yang diperlukan.
parser.add_argument('--bucket', help='Nama bucket tujuan.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Ini adalah parameter opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek tujuan. Ini adalah parameter yang diperlukan.
parser.add_argument('--key', help='Nama objek tujuan.', required=True)
# Tambahkan argumen baris perintah --source_key, yang menentukan nama objek sumber. Ini adalah parameter yang diperlukan.
parser.add_argument('--source_key', help='Nama objek sumber.', required=True)
# Tambahkan argumen baris perintah --source_bucket, yang menentukan nama bucket sumber. Ini adalah parameter yang diperlukan.
parser.add_argument('--source_bucket', help='Nama bucket sumber.', required=True)

def main():
    # Mengurai argumen baris perintah.
    args = parser.parse_args()

    # Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default dari SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Atur wilayah dalam konfigurasi.
    cfg.region = args.region

    # Jika titik akhir disediakan, atur titik akhir dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Buat klien OSS dengan konfigurasi yang ditentukan.
    client = oss.Client(cfg)

    # Kirim permintaan untuk menyalin objek.
    result = client.copy_object(oss.CopyObjectRequest(
        bucket=args.bucket,  # Tentukan nama bucket tujuan.
        key=args.key,  # Tentukan kunci objek tujuan.
        source_key=args.source_key,  # Tentukan kunci objek sumber.
        source_bucket=args.source_bucket,  # Tentukan nama bucket sumber.
    ))
    
    # Hapus objek asli.
    client.delete_object(oss.DeleteObjectRequest(
        bucket=args.source_bucket,
        key=args.source_key
    ))

    # Cetak hasil operasi penyalinan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID versi: {result.version_id},'
          f' hash crc64: {result.hash_crc64},'
          f' ID versi sumber: {result.source_version_id},'
          f' enkripsi sisi server: {result.server_side_encryption},'
          f' enkripsi data sisi server: {result.server_side_data_encryption},'
          f' terakhir dimodifikasi: {result.last_modified},'
          f' etag: {result.etag},'
    )

# Panggil fungsi utama saat skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Fungsi utama dipanggil saat file dijalankan langsung.

Ganti nama file menggunakan manajer salinan (Copier)

Kode berikut menunjukkan cara mengganti nama file menggunakan metode Copier.Copy dari manajer salinan.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh copier")

# Tambahkan argumen baris perintah --region (wajib), yang menentukan wilayah tempat bucket berada.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)

# Tambahkan argumen baris perintah --bucket (wajib), yang menentukan nama bucket tujuan.
parser.add_argument('--bucket', help='Nama bucket.', required=True)

# Tambahkan argumen baris perintah --endpoint (opsional), yang menentukan titik akhir untuk mengakses OSS.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

# Tambahkan argumen baris perintah --key (wajib), yang menentukan nama objek tujuan.
parser.add_argument('--key', help='Nama objek.', required=True)

# Tambahkan argumen baris perintah --source_key (wajib), yang menentukan nama objek sumber.
parser.add_argument('--source_key', help='Nama alamat sumber untuk objek.', required=True)

# Tambahkan argumen baris perintah --source_bucket (wajib), yang menentukan nama bucket sumber.
parser.add_argument('--source_bucket', help='Nama alamat sumber untuk bucket.', required=True)


def main():
    # Mengurai argumen baris perintah.
    args = parser.parse_args()

    # Muat kredensial dari variabel lingkungan.
    # Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default dari SDK.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider  # Atur penyedia kredensial.
    cfg.region = args.region  # Atur wilayah tempat bucket berada.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint  # Jika titik akhir disediakan, atur titik akhir kustom.

    # Buat instance klien OSS.
    client = oss.Client(cfg)

    # Buat instance Copier dan salin objek.
    copier = client.copier()

    # Salin objek.
    result = copier.copy(
        oss.CopyObjectRequest(
            bucket=args.bucket,          # Nama bucket tujuan.
            key=args.key,                # Nama objek tujuan.
            source_bucket=args.source_bucket,  # Nama bucket sumber.
            source_key=args.source_key   # Nama objek sumber.
        )
    )

    # Cetak hasil salinan.
    # Gunakan vars(result) untuk mengonversi objek hasil menjadi kamus dan mencetaknya.
    print(vars(result))


if __name__ == "__main__":
    main()

Referensi

  • Untuk kode contoh lengkap untuk mengganti nama file menggunakan metode salinan sederhana, lihat copy_object.py.

  • Untuk kode contoh lengkap untuk mengganti nama file menggunakan manajer salinan, lihat copier.py.