すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:Python 2.0 用 OSS SDK を使用してオブジェクトを一覧表示する

最終更新日:Aug 05, 2025

このトピックでは、Object Storage Service (OSS) SDK for Python を使用してバケット内のすべてのオブジェクトを一覧表示する方法について説明します。

使用上の注意

  • このトピックのサンプルコードでは、中国 (杭州) リージョンのリージョン ID cn-hangzhou を使用しています。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。バケットが配置されているのと同じリージョン内の他の Alibaba Cloud サービスを使用してバケット内のリソースにアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • オブジェクトを一覧表示するには、oss:ListObjects 権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。

サンプルコード

次のサンプルコードは、ListObjectsV2 オペレーションを呼び出してバケット内のすべてのオブジェクトを一覧表示する例を示しています。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメータパーサーを作成します。
parser = argparse.ArgumentParser(description="list objects v2 sample")
# --region パラメータを指定します。これは、バケットが配置されているリージョンを指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメータを指定します。これは、バケットの名前を指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメータを指定します。これは、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。このコマンドラインパラメータはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    args = parser.parse_args()  # コマンドラインパラメータを解析します。

    # 認証のために環境変数からアクセス認証情報を取得します。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を読み込み、認証情報プロバイダーを指定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # 設定のリージョンをコマンドラインで指定されたリージョンに設定します。
    cfg.region = args.region
    # endpoint パラメータが指定されている場合は、エンドポイントを指定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 設定を使用して OSSClient インスタンスを作成します。
    client = oss.Client(cfg)

    # ListObjectsV2 オペレーションでオブジェクトを一覧表示できるようにページネータを作成します。
    paginator = client.list_objects_v2_paginator()

    # 一覧表示されたオブジェクトの各ページをトラバースします。
    for page in paginator.iter_page(oss.ListObjectsV2Request(
            bucket=args.bucket
        )
    ):
        # 各ページの各オブジェクトをトラバースします。
        for o in page.contents:
            # オブジェクトの名前、サイズ、最終更新時刻を表示します。
            print(f'Object: {o.key}, {o.size}, {o.last_modified}')

if __name__ == "__main__":
    main() # スクリプトが直接実行されたときに、スクリプトのメイン関数にエントリポイントを指定します。

一般的なシナリオ

特定のディレクトリ内のすべてのオブジェクトを一覧表示する

次のサンプルコードは、prefix パラメータを指定して、特定のディレクトリ内のすべてのオブジェクトに関する情報 (オブジェクトサイズ、最終更新時刻、オブジェクト名など) を一覧表示する例を示しています。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメータパーサーを作成します。
parser = argparse.ArgumentParser(description="list objects v2 sample")
# --region パラメータを指定します。これは、バケットが配置されているリージョンを指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメータを指定します。これは、バケットの名前を指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメータを指定します。これは、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。このコマンドラインパラメータはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    args = parser.parse_args()  # コマンドラインパラメータを解析します。

    # 認証のために環境変数からアクセス認証情報を取得します。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を読み込み、認証情報プロバイダーを指定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # 設定のリージョンをコマンドラインで指定されたリージョンに設定します。
    cfg.region = args.region
    # endpoint パラメータが指定されている場合は、エンドポイントを指定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 設定を使用して OSSClient インスタンスを作成します。
    client = oss.Client(cfg)

    # ListObjectsV2 オペレーションでオブジェクトを一覧表示できるようにページネータを作成します。
    paginator = client.list_objects_v2_paginator()

    # 一覧表示されたオブジェクトの各ページをトラバースします。
    for page in paginator.iter_page(oss.ListObjectsV2Request(
            bucket=args.bucket,
            prefix="exampledir/", # prefix パラメータを exampledir/ に設定して、exampledir/ ディレクトリ内のすべてのオブジェクトを一覧表示します。
        )
    ):
        # 各ページの各オブジェクトをトラバースします。
        for o in page.contents:
            # オブジェクトの名前、サイズ、最終更新時刻を表示します。
            print(f'Object: {o.key}, Size: {o.size}, Last_modified: {o.last_modified}')


if __name__ == "__main__":
    main() # スクリプトが直接実行されたときに、スクリプトのメイン関数にエントリポイントを指定します。

名前が特定のプレフィックスを含むオブジェクトを一覧表示する

次のサンプルコードは、prefix パラメータを指定して、名前が指定されたプレフィックスを含むオブジェクトに関する情報 (オブジェクトサイズ、最終更新時刻、オブジェクト名など) を一覧表示する例を示しています。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメータパーサーを作成します。
parser = argparse.ArgumentParser(description="list objects v2 sample")
# --region パラメータを指定します。これは、バケットが配置されているリージョンを指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメータを指定します。これは、バケットの名前を指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメータを指定します。これは、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。このコマンドラインパラメータはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    args = parser.parse_args()  # コマンドラインパラメータを解析します。

    # 認証のために環境変数からアクセス認証情報を取得します。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を読み込み、認証情報プロバイダーを指定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # 設定のリージョンをコマンドラインで指定されたリージョンに設定します。
    cfg.region = args.region
    # endpoint パラメータが指定されている場合は、エンドポイントを指定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 設定を使用して OSSClient インスタンスを作成します。
    client = oss.Client(cfg)

    # ListObjectsV2 オペレーションでオブジェクトを一覧表示できるようにページネータを作成します。
    paginator = client.list_objects_v2_paginator()

    # 一覧表示されたオブジェクトの各ページをトラバースします。
    for page in paginator.iter_page(oss.ListObjectsV2Request(
            bucket=args.bucket,
            prefix="my-object-", # prefix パラメータを my-object- に設定します。これは、my-object- プレフィックスを含む名前のオブジェクトのみが一覧表示されることを意味します。
        )
    ):
        # 各ページの各オブジェクトをトラバースします。
        for o in page.contents:
            # オブジェクトの名前、サイズ、最終更新時刻を表示します。
            print(f'Object: {o.key}, Size: {o.size}, Last_modified: {o.last_modified}')

if __name__ == "__main__":
    main() # スクリプトが直接実行されたときに、スクリプトのメイン関数にエントリポイントを指定します。

特定の数のオブジェクトを一覧表示する

次のサンプルコードは、MaxKeys パラメータを指定して、特定の数のオブジェクトに関する情報 (オブジェクトサイズ、最終更新時刻、オブジェクト名など) を一覧表示する例を示しています。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメータパーサーを作成します。
parser = argparse.ArgumentParser(description="list objects v2 sample")
# --region パラメータを指定します。これは、バケットが配置されているリージョンを指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメータを指定します。これは、バケットの名前を指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメータを指定します。これは、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。このコマンドラインパラメータはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    args = parser.parse_args()  # コマンドラインパラメータを解析します。

    # 認証のために環境変数からアクセス認証情報を取得します。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を読み込み、認証情報プロバイダーを指定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # 設定のリージョンをコマンドラインで指定されたリージョンに設定します。
    cfg.region = args.region
    # endpoint パラメータが指定されている場合は、エンドポイントを指定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 設定を使用して OSSClient インスタンスを作成します。
    client = oss.Client(cfg)

    # ListObjectsV2 オペレーションでオブジェクトを一覧表示できるようにページネータを作成します。
    paginator = client.list_objects_v2_paginator()

    # 一覧表示されたオブジェクトの各ページをトラバースします。
    for page in paginator.iter_page(oss.ListObjectsV2Request(
            bucket=args.bucket,
            max_keys=10, # 1 ページあたり最大 10 個のオブジェクトを返すように指定します。
        )
    ):
        # 各ページの各オブジェクトをトラバースします。
        for o in page.contents:
            # オブジェクトの名前、サイズ、最終更新時刻を表示します。
            print(f'Object: {o.key}, Size: {o.size}, Last_modified: {o.last_modified}')

        print('-' * 30)

if __name__ == "__main__":
    main() # スクリプトが直接実行されたときに、スクリプトのメイン関数にエントリポイントを指定します。

特定の位置からすべてのオブジェクトを一覧表示する

次のサンプルコードは、StartAfter パラメータを設定して、一覧表示操作の開始位置を指定する方法の例を示しています。名前が StartAfter パラメータの値よりもアルファベット順で後のすべてのオブジェクトが返されます。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメータパーサーを作成します。
parser = argparse.ArgumentParser(description="list objects v2 sample")
# --region パラメータを指定します。これは、バケットが配置されているリージョンを指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# --bucket パラメータを指定します。これは、バケットの名前を指定します。このコマンドラインパラメータは必須です。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# --endpoint パラメータを指定します。これは、他のサービスが OSS にアクセスするために使用できるエンドポイントを指定します。このコマンドラインパラメータはオプションです。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    args = parser.parse_args()  # コマンドラインパラメータを解析します。

    # 認証のために環境変数からアクセス認証情報を取得します。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト設定を読み込み、認証情報プロバイダーを指定します。
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # 設定のリージョンをコマンドラインで指定されたリージョンに設定します。
    cfg.region = args.region
    # endpoint パラメータが指定されている場合は、エンドポイントを指定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # 設定を使用して OSSClient インスタンスを作成します。
    client = oss.Client(cfg)

    # ListObjectsV2 オペレーションでオブジェクトを一覧表示できるようにページネータを作成します。
    paginator = client.list_objects_v2_paginator()

    # 一覧表示されたオブジェクトの各ページをトラバースします。
    for page in paginator.iter_page(oss.ListObjectsV2Request(
            bucket=args.bucket,
            start_after="my-object", # my-object よりもアルファベット順で後の名前のオブジェクトが一覧表示されるように指定します。
        )
    ):
        # 各ページの各オブジェクトをトラバースします。
        for o in page.contents:
            # オブジェクトの名前、サイズ、最終更新時刻を表示します。
            print(f'Object: {o.key}, Size: {o.size}, Last_modified: {o.last_modified}')

        print('-' * 30)

if __name__ == "__main__":
    main() # スクリプトが直接実行されたときに、スクリプトのメイン関数にエントリポイントを指定します。

関連情報

  • オブジェクトを一覧表示するために使用される完全なサンプルコードについては、list_objects_v2.py にアクセスしてください。