全部产品
Search
文档中心

Object Storage Service:Daftar file (Python SDK V1)

更新时间:Nov 29, 2025

Topik ini menjelaskan cara menampilkan daftar objek dalam bucket yang telah diaktifkan fitur Pengendalian versi. Anda dapat menampilkan semua objek, sejumlah objek tertentu, atau objek yang memiliki awalan tertentu.

Catatan penggunaan

  • Pada topik ini digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses menggunakan OSS SDK untuk Python 1.0.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.

  • Untuk menampilkan daftar objek, Anda harus memiliki izin oss:ListObjectVersions. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.

Menampilkan semua versi objek dalam bucket

Kode berikut menunjukkan cara menampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket tertentu:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)


# Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
# Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
result = bucket.list_object_versions()

# Tampilkan informasi versi semua objek.
next_key_marker = None
next_versionid_marker = None
while True:
    result = bucket.list_object_versions(key_marker=next_key_marker, versionid_marker=next_versionid_marker)

    # Lihat informasi versi objek yang ditampilkan.
    for version_info in result.versions:
        print('version_info.versionid:', version_info.versionid)
        print('version_info.key:', version_info.key)
        print('version_info.is_latest:', version_info.is_latest)

    # Lihat informasi versi penanda hapus yang ditampilkan.
    for del_maker_Info in result.delete_marker:
        print('del_maker.key:', del_maker_Info.key)
        print('del_maker.versionid:', del_maker_Info.versionid)
        print('del_maker.is_latest:', del_maker_Info.is_latest)

    is_truncated = result.is_truncated

    # Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop.
    if is_truncated:
        next_key_marker = result.next_key_marker
        next_versionid_marker = result.next_versionid_marker
    else:
        break

Menampilkan versi objek dengan awalan tertentu

Kode berikut menunjukkan cara menampilkan informasi versi objek yang memiliki awalan tertentu:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
# Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
result = bucket.list_object_versions()

# Tentukan bahwa Anda ingin menampilkan informasi versi objek yang namanya diawali dengan awalan "test-".
prefix = 'test-'
next_key_marker = None
next_versionid_marker = None
while True:
    result = bucket.list_object_versions(prefix=prefix, key_marker=next_key_marker, versionid_marker=next_versionid_marker)

    # Lihat informasi versi objek yang ditampilkan.
    for version_info in result.versions:
        print('version_info.versionid:', version_info.versionid)
        print('version_info.key:', version_info.key)
        print('version_info.is_latest:', version_info.is_latest)

    # Lihat informasi versi penanda hapus yang ditampilkan.
    for del_maker_Info in result.delete_marker:
        print('del_maker.key:', del_maker_Info.key)
        print('del_maker.versionid:', del_maker_Info.versionid)
        print('del_maker.is_latest:', del_maker_Info.is_latest)

    is_truncated = result.is_truncated

    # Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop.
    if is_truncated:
        next_key_marker = result.next_key_marker
        next_versionid_marker = result.next_versionid_marker
    else:
        break

Menampilkan jumlah tertentu dari versi objek

Kode berikut menunjukkan cara menampilkan informasi versi sejumlah objek tertentu:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
# Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
result = bucket.list_object_versions()

# Tentukan bahwa maksimal 200 hasil dapat dikembalikan.
max_keys = 200

result = bucket.list_object_versions(max_keys=max_keys)

# Lihat informasi versi objek yang ditampilkan.
for version_info in result.versions:
    print('version_info.versionid:', version_info.versionid)
    print('version_info.key:', version_info.key)
    print('version_info.is_latest:', version_info.is_latest)

# Lihat informasi versi penanda hapus objek yang ditampilkan.
for del_maker_Info in result.delete_marker:
    print('del_maker.key:', del_maker_Info.key)
    print('del_maker.versionid:', del_maker_Info.versionid)
    print('del_maker.is_latest:', del_maker_Info.is_latest)

# Periksa apakah daftar terpotong.
# Anda menentukan bahwa maksimal 200 hasil dapat dikembalikan. Jika jumlah objek dalam bucket lebih dari 200, daftar akan terpotong dan is_truncated bernilai True. Jika jumlah objek kurang dari 200, daftar tidak terpotong dan is_truncated bernilai False.
print('is truncated', result.is_truncated)

Fitur folder

OSS tidak memiliki struktur folder asli. Semua elemen disimpan sebagai objek. Anda dapat membuat folder dengan membuat objek berukuran nol byte yang namanya diakhiri dengan garis miring (/). Objek ini dapat diunggah dan diunduh. Konsol OSS menampilkan objek yang namanya diakhiri dengan garis miring (/) sebagai folder.

Anda dapat menggunakan parameter `delimiter` dan `prefix` untuk mensimulasikan folder:

  • Jika Anda mengatur `prefix` ke nama folder, semua objek yang namanya diawali dengan awalan tersebut akan ditampilkan. Semua file dan subfolder dalam folder tersebut ditampilkan sebagai objek.

  • Jika Anda mengatur `prefix` dan juga mengatur `delimiter` ke garis miring (/), hanya file dan subfolder dalam folder tersebut yang ditampilkan. Subfolder ditampilkan sebagai `CommonPrefixes`. File dan folder di dalam subfolder tersebut tidak ditampilkan.

Asumsikan bucket bernama `examplebucket` berisi objek oss.jpg, fun/test.jpg, fun/movie/001.avi, dan fun/movie/007.txt, serta menggunakan garis miring (/) sebagai pemisah folder. Struktur foldernya adalah sebagai berikut:

examplebucket           
 └── oss.jpg
 └── fun               
      └── test.jpg
      └── movie
           └── 001.avi
           └── 007.txt

Contoh berikut menunjukkan cara menampilkan daftar objek dengan mensimulasikan folder.

  • Menampilkan versi objek dalam direktori root

    Kode berikut menunjukkan cara menampilkan informasi versi objek dalam direktori root:

    # -*- coding: utf-8 -*-
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    # Tentukan wilayah tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
    region = "cn-hangzhou"
    
    # Ganti yourBucketName dengan nama bucket Anda.
    bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
    
    # Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
    # Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
    result = bucket.list_object_versions()
    
    # Atur delimiter ke garis miring (/).
    delimiter = "/"
    next_key_marker = None
    next_versionid_marker = None
    while True:
        result = bucket.list_object_versions(delimiter=delimiter, key_marker=next_key_marker, versionid_marker=next_versionid_marker)
    
        # Lihat informasi versi objek yang ditampilkan.
        for version_info in result.versions:
            print('version_info.versionid:', version_info.versionid)
            print('version_info.key:', version_info.key)
            print('version_info.is_latest:', version_info.is_latest)
    
        # Lihat informasi versi penanda hapus yang ditampilkan.
        for del_maker_Info in result.delete_marker:
            print('del_maker.key:', del_maker_Info.key)
            print('del_maker.versionid:', del_maker_Info.versionid)
            print('del_maker.is_latest:', del_maker_Info.is_latest)
    
        # Lihat nama direktori yang diakhiri dengan garis miring (/).
        for common_prefix in result.common_prefix:
            print("common_prefix:", common_prefix)
    
        is_truncated = result.is_truncated
    
        # Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop.
        if is_truncated:
            next_key_marker = result.next_key_marker
            next_versionid_marker = result.next_versionid_marker
        else:
            break

    Hasil:

    ('version_info.versionid:', 'CAEQEhiBgMCw8Y7FqBciIGIzMDE3MTEzOWRiMDRmZmFhMmRlMjljZWI0MWU4****')
    ('version_info.key:', 'oss.jpg')
    ('version_info.is_latest:', True)
    ('common_prefix:', 'fun/')
  • Menampilkan file dan subfolder dalam folder

    Kode berikut menunjukkan cara menampilkan file dan subfolder dalam folder tertentu:

    # -*- coding: utf-8 -*-
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    # Tentukan wilayah tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
    region = "cn-hangzhou"
    
    # Ganti yourBucketName dengan nama bucket Anda.
    bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
    
    # Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
    # Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
    result = bucket.list_object_versions()
    
    # Atur delimiter ke garis miring (/) dan prefix ke fun/.
    prefix = "fun/"
    delimiter = "/"
    next_key_marker = None
    next_versionid_marker = None
    while True:
        result = bucket.list_object_versions(prefix=prefix, delimiter=delimiter, key_marker=next_key_marker, versionid_marker=next_versionid_marker)
    
        # Lihat informasi versi objek yang ditampilkan.
        for version_info in result.versions:
            print('version_info.versionid:', version_info.versionid)
            print('version_info.key:', version_info.key)
            print('version_info.is_latest:', version_info.is_latest)
    
        # Lihat informasi versi penanda hapus yang ditampilkan.
        for del_maker_Info in result.delete_marker:
            print('del_maker.key:', del_maker_Info.key)
            print('del_maker.versionid:', del_maker_Info.versionid)
            print('del_maker.is_latest:', del_maker_Info.is_latest)
    
        # Lihat nama folder yang diakhiri dengan garis miring (/).
        for common_prefix in result.common_prefix:
            print("common_prefix:", common_prefix)
    
        is_truncated = result.is_truncated
    
        # Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop.
        if is_truncated:
            next_key_marker = result.next_key_marker
            next_versionid_marker = result.next_versionid_marker
        else:
            break

    Hasil:

    ('version_info.versionid:', 'CAEQFRiBgMCh9JDkrxciIGE3OTNkYzFhYTc2YzQzOTQ4Y2MzYjg2YjQ4ODg*****')
    ('version_info.key:', 'fun/test.jpg')
    ('version_info.is_latest:', True)
    ('commonPrefix:', 'fun/movie/')

Referensi

Untuk informasi selengkapnya mengenai operasi API untuk menampilkan daftar objek, lihat ListObjectVersions (GetBucketVersions).