Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:List objects via OSS SDK for Python 1.0

Son Güncelleme:Oct 01, 2026

Python için Object Storage Service (OSS) SDK, bir paketteki nesneleri listelemek üzere kapsüllenmiş yineleyiciler sağlar. Bu yineleyicileri kullanarak nesneleri ön ek, başlangıç konumu ve diğer kriterlere göre filtreleyebilirsiniz.

Kullanım

Python için OSS SDK, nesneleri listelemek için iki yineleyici sunar: GetBucket (ListObjects) işlemine dayanan ObjectIterator ve ListObjectsV2 (GetBucketV2) işlemine dayanan ObjectIteratorV2. Temel farklılıklar şunlardır:

  • ObjectIterator: Varsayılan olarak sahip bilgilerini döndürür.

  • ObjectIteratorV2: Sahip bilgilerinin döndürülüp döndürülmeyeceğini belirtmek için fetch_owner parametresini kullanır.

    ObjectIteratorV2 kullanımı için Python için OSS SDK 2.12.0 veya üzeri bir sürüm gerekir.

Sürüm oluşturma özelliği etkinleştirilmiş paketler için gelişmiş desteği nedeniyle ObjectIteratorV2 önerilir.

  • ObjectIteratorV2 yapıcısı

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

    Parametre açıklamalarını görüntülemek için tıklayın


    Parametre


    Tür


    Gerekli


    Açıklama


    bucket


    oss2.Bucket


    Evet


    Başlatılan paket.


    prefix


    str


    Hayır


    Nesne adlarını filtrelemek için bir ön ek belirtir. Varsayılan değer boş bir dizedir ve tüm nesneleri döndürür.


    delimiter


    str


    Hayır


    Klasör yapısını simüle etmek için kullanılan sınırlayıcı. Genellikle eğik çizgi (/) olarak ayarlanır.


    continuation_token


    str


    Hayır


    Sayfalama belirteci. İlk istek için boş bir dize iletin. Sonraki istekler için önceki yanıttaki next_continuation_token değerini kullanın.


    start_after


    str


    Hayır


    Sayfalandırılmış liste işleminin başlangıç noktasını belirtir. İşlem, belirtilen dizeden sözlüksel olarak daha büyük ada sahip tüm nesneleri döndürür. Pakette start_after ile aynı ada sahip bir nesne olsa bile bu nesne sonuca dahil edilmez.


    fetch_owner


    bool


    Hayır

    Sonuçlara sahip bilgilerinin dahil edilip edilmeyeceğini belirtir. Geçerli değerler:

    - True: Sahip bilgilerini döndürür.

    - False (varsayılan): Sahip bilgilerini döndürmez.


    max_keys


    int


    Hayır


    Tek bir yanıtta döndürülecek maksimum nesne sayısı. Varsayılan 100, maksimum 1000'dir.


    max_retries


    int


    Hayır


    Başarısız bir istek için maksimum yeniden deneme sayısı.

  • ObjectIterator yapıcısı

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

    Parametre açıklamalarını görüntülemek için tıklayın


    Parametre


    Tür


    Gerekli


    Açıklama


    bucket


    oss2.Bucket


    Evet


    Başlatılan paket.


    prefix


    str


    Hayır


    Nesne adlarını filtrelemek için bir ön ek belirtir. Varsayılan değer boş bir dizedir ve tüm nesneleri döndürür.


    delimiter


    str


    Hayır


    Klasör yapısını simüle etmek için kullanılan sınırlayıcı. Genellikle eğik çizgi (/) olarak ayarlanır.


    marker


    str


    Hayır


    Sayfalandırılmış liste işleminin başlangıç noktasını belirtir. İşlem, belirtilen dizeden sözlüksel olarak daha büyük ada sahip tüm nesneleri döndürür. Pakette marker ile aynı ada sahip bir nesne olsa bile bu nesne sonuca dahil edilmez.


    max_keys


    int


    Hayır


    Tek bir yanıtta döndürülecek maksimum nesne sayısı. Varsayılan 100, maksimum 1000'dir.


    max_retries


    int


    Hayır


    Başarısız bir istek için maksimum yeniden deneme sayısı.

Kod örnekleri

Kodu çalıştırmadan önce Python için OSS SDK'yı yükleyin ve erişim kimlik bilgileri için ortam değişkenlerini yapılandırın. Daha fazla bilgi için bkz. Python için OSS SDK ile hızlı başlangıç. Bir Alibaba Cloud hesabı varsayılan olarak tüm izinlere sahiptir. Resource Access Management (RAM) kullanıcısı veya RAM rolü kullanıyorsanız, kullanıcı veya rolün oss:ListObjects iznine sahip olduğundan emin olun.

Tüm nesneleri listeleme

ObjectIteratorV2 (Önerilen)

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # List all objects in the bucket.
    print("List all objects:")
    for obj in oss2.ObjectIteratorV2(bucket):
        print(f"Object name: {obj.key}, Size: {obj.size} bytes")

if __name__ == "__main__":
    main()

Nesneler için sahip bilgilerini almak amacıyla fetch_owner=True olarak ayarlayın.

# List all objects and get their owner information.
for obj in oss2.ObjectIteratorV2(bucket, fetch_owner=True):
    print(f"Object name: {obj.key}")
    print(f"Owner name: {obj.owner.display_name}")
    print(f"Owner ID: {obj.owner.id}")

ObjectIterator

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # List all objects in the bucket.
    print("List all objects:")
    for obj in oss2.ObjectIterator(bucket):
        print(f"Object name: {obj.key}, Size: {obj.size} bytes")

if __name__ == "__main__":
    main()

Belirli sayıda nesneyi listeleme

ObjectIteratorV2 (Önerilen)

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # List the first 10 objects in the bucket.
    print("List the first 10 objects:")
    for obj in islice(oss2.ObjectIteratorV2(bucket), 10):
        print(f"Object name: {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():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)

    # List the first 10 objects in the bucket.
    print("List the first 10 objects:")
    for obj in islice(oss2.ObjectIterator(bucket), 10):
        print(f"Object name: {obj.key}")

if __name__ == "__main__":
    main()

Belirli bir ön eke sahip nesneleri listeleme

Bir pakette dört nesne olduğunu varsayalım: oss.jpg, fun/test.jpg, fun/movie/001.avi ve fun/movie/007.avi. Eğik çizgi (/) klasör ayırıcısı olarak kullanılır.

ObjectIteratorV2 (Önerilen)

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List all objects in the fun folder, including objects in its subdirectories.
    print("List all objects with the prefix fun/:")
    for obj in oss2.ObjectIteratorV2(bucket, prefix='fun/'):
        print(f"Object name: {obj.key}")

if __name__ == "__main__":
    main()

Beklenen çıktı:

List all objects with the prefix fun/:
Object name: fun/
Object name: fun/movie/
Object name: fun/movie/001.avi
Object name: fun/movie/007.avi
Object name: fun/test.jpg

ObjectIterator

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List all objects in the fun folder, including objects in its subdirectories.
    print("List all objects with the prefix fun/:")
    for obj in oss2.ObjectIterator(bucket, prefix='fun/'):
        print(f"Object name: {obj.key}")

if __name__ == "__main__":
    main()

Beklenen çıktı:

List all objects with the prefix fun/:
Object name: fun/
Object name: fun/movie/
Object name: fun/movie/001.avi
Object name: fun/movie/007.avi
Object name: fun/test.jpg

Belirli bir dizindeki nesneleri ve alt dizinleri listeleme

OSS'te klasör kavramı yoktur. Tüm öğeler nesne olarak depolanır. Klasör oluşturmak için eğik çizgi (/) ile biten sıfır baytlık bir nesne oluşturabilirsiniz. OSS konsolu, eğik çizgi (/) ile biten nesneleri klasör olarak gösterir.

Klasör işlevselliğini simüle etmek için delimiter ve prefix parametrelerini kullanabilirsiniz.

  • prefix değerini bir klasör adına ayarlarsanız işlem, anahtarları bu ön ek ile başlayan tüm nesneleri listeler. Bu, simüle edilen klasörün tüm içeriğini özyinelemeli olarak listeler.

  • delimiter değerini ayrıca eğik çizgi (/) olarak ayarlarsanız işlem yalnızca o klasörün üst düzeyindeki nesneleri ve alt dizin adlarını listeler. Alt dizinlerde bulunan nesneler listelenmez.

ObjectIteratorV2 (Önerilen)

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List the objects and subfolder names in the fun folder, but not the objects within the subfolders.
    print("List objects and subdirectories in the fun directory:")
    for obj in oss2.ObjectIteratorV2(bucket, prefix='fun/', delimiter='/', start_after='fun/'):
        # Use the is_prefix method to determine whether the obj is a folder.
        if obj.is_prefix():
            print(f"Subdirectory: {obj.key}")
        else:
            print(f"Object: {obj.key}")

if __name__ == "__main__":
    main()

Beklenen çıktı:

List objects and subdirectories in the fun directory:
Subdirectory: fun/movie/
Object: fun/test.jpg

ObjectIterator

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List the objects and subfolder names in the fun folder, but not the objects within the subfolders.
    print("List objects and subdirectories in the fun directory:")
    for obj in oss2.ObjectIterator(bucket, prefix='fun/', delimiter='/', marker='fun/'):
        # Use the is_prefix method to determine whether the obj is a folder.
        if obj.is_prefix():
            print(f"Subdirectory: {obj.key}")
        else:
            print(f"Object: {obj.key}")

if __name__ == "__main__":
    main()

Beklenen çıktı:

List objects and subdirectories in the fun directory:
Subdirectory: fun/movie/
Object: fun/test.jpg

Belirli bir başlangıç konumundan sonraki nesneleri listeleme

Bir pakette aşağıdaki dört nesnenin bulunduğunu varsayalım: x1.txt, x2.txt, z1.txt ve z2.txt.

ObjectIteratorV2 (Önerilen)

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List all objects after x2.txt (excluding x2.txt itself).
    print("List all objects after x2.txt:")
    for obj in oss2.ObjectIteratorV2(bucket, start_after="x2.txt"):
        print(f"Object name: {obj.key}")

if __name__ == "__main__":
    main()

Beklenen çıktı:

List all objects after x2.txt:
Object name: z1.txt
Object name: z2.txt

ObjectIterator

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

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List all objects after x2.txt (excluding x2.txt itself).
    print("List all objects after x2.txt:")
    for obj in oss2.ObjectIterator(bucket, marker="x2.txt"):
        print(f"Object name: {obj.key}")

if __name__ == "__main__":
    main()

Beklenen çıktı:

List all objects after x2.txt:
Object name: z1.txt
Object name: z2.txt

Belirli bir dizindeki nesnelerin boyutunu alma

ObjectIteratorV2 (Önerilen)

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

def calculate_folder_size(bucket, folder):
    """Calculate the total size of a specified folder."""
    total_size = 0
    for obj in oss2.ObjectIteratorV2(bucket, prefix=folder):
        total_size += obj.size
    return total_size

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List all objects and folders in the root directory and display their sizes.
    print("List the sizes of objects and folders in the root directory:")
    for obj in oss2.ObjectIteratorV2(bucket, delimiter='/'):
        if obj.is_prefix():
            # Calculate the total size of the folder.
            folder_size = calculate_folder_size(bucket, obj.key)
            print(f"Directory: {obj.key}, Size: {folder_size} bytes")
        else:
            # Display the object size directly.
            print(f"Object: {obj.key}, Size: {obj.size} bytes")

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):
    """Calculate the total size of a specified folder."""
    total_size = 0
    for obj in oss2.ObjectIterator(bucket, prefix=folder):
        total_size += obj.size
    return total_size

def main():
    # Get access credentials from environment variables.
    auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
    
    # Set the endpoint and region where the bucket is located.
    endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
    region = "cn-hangzhou"
    # Initialize the bucket.
    bucket = oss2.Bucket(auth, endpoint, "example-bucket", region=region)
    
    # List all objects and folders in the root directory and display their sizes.
    print("List the sizes of objects and folders in the root directory:")
    for obj in oss2.ObjectIterator(bucket, delimiter='/'):
        if obj.is_prefix():
            # Calculate the total size of the folder.
            folder_size = calculate_folder_size(bucket, obj.key)
            print(f"Directory: {obj.key}, Size: {folder_size} bytes")
        else:
            # Display the object size directly.
            print(f"Object: {obj.key}, Size: {obj.size} bytes")

if __name__ == "__main__":
    main()