全部产品
Search
文档中心

Object Storage Service:Menampilkan objek melalui OSS SDK untuk Python 1.0

更新时间:Nov 01, 2025

Layanan Penyimpanan Objek (OSS) SDK untuk Python menyediakan iterator terenkapsulasi untuk menampilkan objek dalam sebuah bucket. Anda dapat menggunakan iterator ini untuk memfilter objek berdasarkan awalan, posisi awal, dan kriteria lainnya.

Penggunaan

OSS SDK untuk Python menyediakan dua iterator untuk menampilkan objek: ObjectIterator, yang didasarkan pada operasi GetBucket (ListObjects), dan ObjectIteratorV2, yang didasarkan pada operasi ListObjectsV2 (GetBucketV2). Perbedaan utamanya adalah:

  • ObjectIterator: Mengembalikan informasi pemilik secara default.

  • ObjectIteratorV2: Menggunakan parameter fetch_owner untuk menentukan apakah akan mengembalikan informasi pemilik.

    Penggunaan ObjectIteratorV2 memerlukan OSS SDK untuk Python versi 2.12.0 atau lebih baru.

Kami merekomendasikan ObjectIteratorV2 karena dukungan yang lebih baik untuk bucket dengan pengendalian versi diaktifkan.

  • ObjectIteratorV2 Konstruktor

    oss2.ObjectIteratorV2(bucket, prefix='', delimiter='', continuation_token='', start_after='', fetch_owner=False, encoding_type = 'url', max_keys=100, max_retries=None, headers=None)

    Klik untuk melihat deskripsi parameter

    Parameter

    Tipe

    Wajib

    Deskripsi

    bucket

    oss2.Bucket

    Ya

    Bucket yang telah diinisialisasi.

    prefix

    str

    Tidak

    Menentukan awalan untuk memfilter nama objek. Nilai default adalah string kosong, yang mengembalikan semua objek.

    delimiter

    str

    Tidak

    Delimiter yang digunakan untuk mensimulasikan struktur folder. Biasanya diatur ke garis miring maju (/).

    continuation_token

    str

    Tidak

    Token paginasi. Kirim string kosong untuk permintaan pertama. Untuk permintaan selanjutnya, gunakan nilai next_continuation_token dari respons sebelumnya.

    start_after

    str

    Tidak

    Menentukan titik awal untuk operasi daftar halaman. Operasi mengembalikan semua objek yang namanya secara leksikografis lebih besar dari string yang ditentukan. Bahkan jika objek dengan nama yang sama seperti start_after ada di bucket, itu tidak termasuk dalam hasil.

    fetch_owner

    bool

    Tidak

    Menentukan apakah akan menyertakan informasi pemilik dalam hasil. Nilai valid:
    - True: Mengembalikan informasi pemilik.
    - False (default): Tidak mengembalikan informasi pemilik.

    max_keys

    int

    Tidak

    Jumlah maksimum objek yang dikembalikan dalam satu respons. Defaultnya adalah 100, dan maksimumnya adalah 1.000.

    max_retries

    int

    Tidak

    Jumlah maksimum percobaan ulang untuk permintaan yang gagal.

  • ObjectIterator Konstruktor

    oss2.ObjectIterator(bucket, prefix='', delimiter='', marker='', max_keys=100, max_retries=None, headers=None)

    Klik untuk melihat deskripsi parameter

    Parameter

    Tipe

    Wajib

    Deskripsi

    bucket

    oss2.Bucket

    Ya

    Objek Bucket yang telah diinisialisasi.

    prefix

    str

    Tidak

    Menentukan awalan untuk memfilter nama objek. Nilai default adalah string kosong, yang mengembalikan semua objek.

    delimiter

    str

    Tidak

    Delimiter yang digunakan untuk mensimulasikan folder. Ini biasanya diatur ke garis miring maju (/).

    marker

    str

    Tidak

    Posisi awal untuk pencantuman halaman. Mengembalikan semua objek yang namanya secara leksikografis lebih besar dari string yang ditentukan. Bahkan jika objek dengan nama yang sama sebagai marker ada di bucket, itu tidak termasuk dalam hasil.

    max_keys

    int

    Tidak

    Jumlah maksimum objek yang dikembalikan dalam satu permintaan. Nilai default adalah 100. Nilai maksimum adalah 1.000.

    max_retries

    int

    Tidak

    Jumlah maksimum percobaan ulang untuk permintaan yang gagal.

Contoh kode

Sebelum menjalankan kode, instal OSS SDK untuk Python dan konfigurasikan variabel lingkungan untuk kredensial akses. Untuk informasi lebih lanjut, lihat Panduan Cepat SDK Python. Akun Alibaba Cloud memiliki semua izin secara default. Jika Anda menggunakan Pengguna Resource Access Management (RAM) atau Peran RAM, pastikan bahwa pengguna atau peran tersebut memiliki izin oss:ListObjects.

Menampilkan semua objek

ObjectIteratorV2 (Direkomendasikan)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # Menampilkan semua objek dalam bucket.
    print("Menampilkan semua objek:")
    for obj in oss2.ObjectIteratorV2(bucket):
        print(f"Nama objek: {obj.key}, Ukuran: {obj.size} byte")


if __name__ == "__main__":
    main()

Untuk mengambil informasi pemilik objek, atur fetch_owner=True.

# Menampilkan semua objek dan mendapatkan informasi pemiliknya.
for obj in oss2.ObjectIteratorV2(bucket, fetch_owner=True):
    print(f"Nama objek: {obj.key}")
    print(f"Nama pemilik: {obj.owner.display_name}")
    print(f"ID Pemilik: {obj.owner.id}")

ObjectIterator

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # Menampilkan semua objek dalam bucket.
    print("Menampilkan semua objek:")
    for obj in oss2.ObjectIterator(bucket):
        print(f"Nama objek: {obj.key}, Ukuran: {obj.size} byte")


if __name__ == "__main__":
    main()

Menampilkan sejumlah objek tertentu

ObjectIteratorV2 (Direkomendasikan)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from itertools import islice

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # Menampilkan 10 objek pertama dalam bucket.
    print("Menampilkan 10 objek pertama:")
    for obj in islice(oss2.ObjectIteratorV2(bucket), 10):
        print(f"Nama objek: {obj.key}")


if __name__ == "__main__":
    main()

ObjectIterator

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from itertools import islice

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # Menampilkan 10 objek pertama dalam bucket.
    print("Menampilkan 10 objek pertama:")
    for obj in islice(oss2.ObjectIterator(bucket), 10):
        print(f"Nama objek: {obj.key}")


if __name__ == "__main__":
    main()

Menampilkan objek dengan awalan tertentu

Asumsikan bahwa sebuah bucket berisi empat objek: oss.jpg, fun/test.jpg, fun/movie/001.avi, dan fun/movie/007.avi. Garis miring maju (/) digunakan sebagai pemisah folder.

ObjectIteratorV2 (Direkomendasikan)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan semua objek dalam folder fun, termasuk objek dalam subdirektorinya.
    print("Menampilkan semua objek dengan awalan fun/:")
    for obj in oss2.ObjectIteratorV2(bucket, prefix='fun/'):
        print(f"Nama objek: {obj.key}")

if __name__ == "__main__":
    main()

Output yang Diharapkan:

Menampilkan semua objek dengan awalan fun/:
Nama objek: fun/
Nama objek: fun/movie/
Nama objek: fun/movie/001.avi
Nama objek: fun/movie/007.avi
Nama objek: fun/test.jpg

ObjectIterator

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan semua objek dalam folder fun, termasuk objek dalam subdirektorinya.
    print("Menampilkan semua objek dengan awalan fun/:")
    for obj in oss2.ObjectIterator(bucket, prefix='fun/'):
        print(f"Nama objek: {obj.key}")

if __name__ == "__main__":
    main()

Output yang Diharapkan:

Menampilkan semua objek dengan awalan fun/:
Nama objek: fun/
Nama objek: fun/movie/
Nama objek: fun/movie/001.avi
Nama objek: fun/movie/007.avi
Nama objek: fun/test.jpg

Menampilkan objek dan subdirektori dalam direktori tertentu

OSS tidak memiliki konsep folder. Semua elemen disimpan sebagai objek. Untuk membuat folder, Anda dapat membuat objek nol-byte yang diakhiri dengan garis miring maju (/). Konsol OSS menampilkan objek yang diakhiri dengan garis miring maju (/) sebagai folder.

Anda dapat menggunakan parameter delimiter dan prefix untuk mensimulasikan fungsi folder.

  • Jika Anda mengatur parameter prefix ke nama folder, operasi tersebut mencantumkan semua objek yang dimulai dengan awalan ini. Ini mencakup semua objek dan subfolder dalam folder tersebut, serta semua objek dalam subfolder.

  • Jika Anda juga mengatur parameter delimiter ke garis miring maju (/), operasi tersebut hanya mencantumkan nama objek dan subfolder dalam folder tersebut. Objek dalam subfolder tidak dicantumkan.

ObjectIteratorV2 (Direkomendasikan)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan nama objek dan subfolder dalam folder fun, tetapi tidak objek dalam subfolder.
    print("Menampilkan objek dan subdirektori dalam direktori fun:")
    for obj in oss2.ObjectIteratorV2(bucket, prefix='fun/', delimiter='/', start_after='fun/'):
        # Gunakan metode is_prefix untuk menentukan apakah objek tersebut adalah folder.
        if obj.is_prefix():
            print(f"Subdirektori: {obj.key}")
        else:
            print(f"Objek: {obj.key}")

if __name__ == "__main__":
    main()

Output yang Diharapkan:

Menampilkan objek dan subdirektori dalam direktori fun:
Subdirektori: fun/movie/
Objek: fun/test.jpg

ObjectIterator

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan nama objek dan subfolder dalam folder fun, tetapi tidak objek dalam subfolder.
    print("Menampilkan objek dan subdirektori dalam direktori fun:")
    for obj in oss2.ObjectIterator(bucket, prefix='fun/', delimiter='/', marker='fun/'):
        # Gunakan metode is_prefix untuk menentukan apakah objek tersebut adalah folder.
        if obj.is_prefix():
            print(f"Subdirektori: {obj.key}")
        else:
            print(f"Objek: {obj.key}")

if __name__ == "__main__":
    main()

Output yang Diharapkan:

Menampilkan objek dan subdirektori dalam direktori fun:
Subdirektori: fun/movie/
Objek: fun/test.jpg

Menampilkan objek setelah posisi awal tertentu

Asumsikan bahwa sebuah bucket berisi empat objek berikut: x1.txt, x2.txt, z1.txt, dan z2.txt.

ObjectIteratorV2 (Direkomendasikan)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan semua objek setelah x2.txt (tidak termasuk x2.txt itu sendiri).
    print("Menampilkan semua objek setelah x2.txt:")
    for obj in oss2.ObjectIteratorV2(bucket, start_after="x2.txt"):
        print(f"Nama objek: {obj.key}")

if __name__ == "__main__":
    main()

Output yang Diharapkan:

Menampilkan semua objek setelah x2.txt:
Nama objek: z1.txt
Nama objek: z2.txt

ObjectIterator

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan semua objek setelah x2.txt (tidak termasuk x2.txt itu sendiri).
    print("Menampilkan semua objek setelah x2.txt:")
    for obj in oss2.ObjectIterator(bucket, marker="x2.txt"):
        print(f"Nama objek: {obj.key}")

if __name__ == "__main__":
    main()

Output yang Diharapkan:

Menampilkan semua objek setelah x2.txt:
Nama objek: z1.txt
Nama objek: z2.txt

Mendapatkan ukuran objek dalam direktori tertentu

ObjectIteratorV2 (Direkomendasikan)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def calculate_folder_size(bucket, folder):
    """Menghitung ukuran total folder tertentu."""
    total_size = 0
    for obj in oss2.ObjectIteratorV2(bucket, prefix=folder):
        total_size += obj.size
    return total_size

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan semua objek dan folder dalam direktori root dan menampilkan ukurannya.
    print("Menampilkan ukuran objek dan folder dalam direktori root:")
    for obj in oss2.ObjectIteratorV2(bucket, delimiter='/'):
        if obj.is_prefix():
            # Hitung ukuran total folder.
            folder_size = calculate_folder_size(bucket, obj.key)
            print(f"Direktori: {obj.key}, Ukuran: {folder_size} byte")
        else:
            # Tampilkan ukuran objek secara langsung.
            print(f"Objek: {obj.key}, Ukuran: {obj.size} byte")

if __name__ == "__main__":
    main()

ObjectIterator

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

def calculate_folder_size(bucket, folder):
    """Menghitung ukuran total folder tertentu."""
    total_size = 0
    for obj in oss2.ObjectIterator(bucket, prefix=folder):
        total_size += obj.size
    return total_size

def main():
    # Dapatkan kredensial akses dari variabel lingkungan.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Atur Endpoint dan Wilayah bucket.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Inisialisasi bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # Menampilkan semua objek dan folder dalam direktori root dan menampilkan ukurannya.
    print("Menampilkan ukuran objek dan folder dalam direktori root:")
    for obj in oss2.ObjectIterator(bucket, delimiter='/'):
        if obj.is_prefix():
            # Hitung ukuran total folder.
            folder_size = calculate_folder_size(bucket, obj.key)
            print(f"Direktori: {obj.key}, Ukuran: {folder_size} byte")
        else:
            # Tampilkan ukuran objek secara langsung.
            print(f"Objek: {obj.key}, Ukuran: {obj.size} byte")

if __name__ == "__main__":
    main()