アップロードまたはダウンロード タスクの進行状況を表示するために、進行状況バーを設定できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用しています。 OSS と同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「OSS のリージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報を設定する方法の詳細については、「OSS SDK for Python 1.0 を使用してアクセス認証情報を設定する」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
例
bucket.get_object_to_file を使用してオブジェクトをダウンロードするときに進行状況バーを使用する方法の例を、次のサンプルコードに示します。
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import sys
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID 環境変数と OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマッピングされるリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメーターが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# HTTP 応答ヘッダーに Content-Length がない場合、total_bytes の値は None になります。
# consumed_bytes は、ダウンロードされたデータのサイズを指定します。単位: バイト。
# total_bytes は、ダウンロードするオブジェクトの合計サイズを指定します。単位: バイト。
def percentage(consumed_bytes, total_bytes):
if total_bytes:
rate = int(100 * (float(consumed_bytes) / float(total_bytes)))
# rate はダウンロードの進行状況を指定します。
print('\r{0}% '.format(rate), end='')
sys.stdout.flush()
# progress_callback は、進行状況情報を返すために使用されるオプションのパラメーターです。
bucket.get_object_to_file('yourObjectName', 'yourLocalFile', progress_callback=percentage)関連情報
オブジェクトのダウンロード タスクの進行状況バーを設定するための完全なサンプルコードについては、GitHub をご覧ください。