Anda dapat menghapus satu objek, beberapa objek yang ditentukan, objek dengan nama yang mengandung awalan tertentu, atau direktori beserta seluruh objek di dalamnya.
Objek yang telah dihapus tidak dapat dipulihkan. Harap berhati-hati saat melakukan operasi penghapusan.
Catatan penggunaan
Dalam topik ini digunakan titik akhir publik Wilayah Hangzhou, Tiongkok. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lain di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Kredensial akses dalam topik ini diperoleh dari variabel lingkungan. Untuk panduan konfigurasi kredensial akses, lihat Konfigurasi kredensial akses (Python SDK V1).
Instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Layanan Token Keamanan (STS), lihat Inisialisasi (Python SDK V1).
Untuk menghapus objek, Anda memerlukan izin
oss:DeleteObject. Untuk informasi lebih lanjut, lihat Lampirkan kebijakan kustom ke Pengguna RAM.
Hapus satu file
Contoh kode berikut menunjukkan cara menghapus objek bernama exampleobject.txt dari bucket bernama examplebucket:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Hangzhou, Tiongkok, atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya, cn-hangzhou. Perhatikan bahwa parameter ini diperlukan untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti examplebucket dengan nama bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Hapus file.
# Ganti yourObjectName dengan jalur lengkap file yang akan dihapus. Jalur lengkap tidak termasuk nama bucket. Misalnya, exampledir/exampleobject.txt.
# Untuk menghapus folder, atur yourObjectName sebagai nama folder. Jika folder tidak kosong, Anda harus menghapus semua file dalam folder sebelum dapat menghapus foldernya sendiri.
bucket.delete_object('exampledir/exampleobject.txt') Hapus file secara batch
Anda dapat menghapus hingga 1.000 objek sekaligus. Anda dapat menghapus beberapa objek yang ditentukan, objek dengan nama yang mengandung awalan tertentu, atau direktori beserta semua objek di dalamnya.
Selain itu, Anda dapat mengonfigurasi aturan siklus hidup untuk menghapus objek secara otomatis. Untuk informasi lebih lanjut, lihat Aturan siklus hidup berdasarkan waktu modifikasi terakhir.
Hapus Beberapa Objek dengan Nama yang Ditentukan
Contoh kode berikut menunjukkan cara menghapus beberapa objek dengan nama yang ditentukan:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Hangzhou, Tiongkok, atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya, cn-hangzhou. Perhatikan bahwa parameter ini diperlukan untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti examplebucket dengan nama bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Hapus tiga file secara batch. Anda dapat menghapus hingga 1.000 file dalam satu permintaan.
# Tentukan jalur lengkap dari tiga file yang akan dihapus. Jalur lengkap tidak termasuk nama bucket.
result = bucket.batch_delete_objects(['exampleobject1.jpg', 'testobject2.png', 'destobject3.txt'])
# Cetak nama file yang berhasil dihapus.
print('\n'.join(result.deleted_keys)) Hapus Beberapa Objek dengan Awalan Tertentu atau dalam Direktori Tertentu
Contoh kode berikut menunjukkan cara menghapus beberapa objek dengan awalan tertentu serta cara menghapus direktori tertentu dan semua objek di dalamnya.
Jika awalan tidak ditentukan atau diatur ke NULL dalam kode sampel berikut, semua objek dalam bucket akan dihapus. Berhati-hatilah saat menentukan awalan dalam operasi penghapusan.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Hangzhou, Tiongkok, atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya, cn-hangzhou. Perhatikan bahwa parameter ini diperlukan untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti examplebucket dengan nama bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Jika Anda ingin menghapus semua file dengan awalan 'src', atur awalan menjadi 'src'. Operasi ini menghapus semua file non-folder dengan awalan 'src', folder 'src', dan semua file dalam folder tersebut.
prefix = 'src'
# Jika Anda ingin menghapus hanya folder 'src' dan semua file di dalamnya, atur awalan menjadi 'src/'.
# prefix = 'src/'
# Hapus beberapa file.
for obj in oss2.ObjectIterator(bucket, prefix=prefix):
bucket.delete_object(obj.key)Referensi
Untuk contoh kode lengkap yang menunjukkan cara menghapus satu atau lebih file, lihat Contoh GitHub.
Untuk informasi lebih lanjut tentang operasi API yang digunakan untuk menghapus satu file, lihat DeleteObject.
Untuk informasi lebih lanjut tentang operasi API yang digunakan untuk menghapus beberapa file, lihat DeleteMultipleObjects.