このトピックでは、Python 2.0 向けの Object Storage Service (OSS) SDK が提供する File-Like メソッドを使用して、バケット内のオブジェクトにアクセスする方法について説明します。
使用上の注意
このトピックのサンプルコードでは、中国 (杭州) リージョン (
cn-hangzhou) を例として使用します。デフォルトではパブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS リージョンとそれに対応するエンドポイントの詳細については、「OSS リージョンとエンドポイント」をご参照ください。このトピックでは、環境変数から取得したアクセス認証情報を使用しています。アクセス認証情報の構成方法の詳細については、「アクセス認証情報を構成する」をご参照ください。
ファイルをダウンロードするには、
oss:GetObject権限が必要です。詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
メソッド
OSS SDK for Python 2.0 が提供する File-Like メソッドを使用すると、ReadOnlyFile メソッドを使用してバケット内のオブジェクトにアクセスできます。
ReadOnlyFile メソッドは、シングルストリームモードとプリフェッチモードを提供します。並列タスク数を変更して読み取り速度を向上させることができます。
このインターフェイスには、接続切断を処理するための再接続メカニズムが組み込まれており、複雑なネットワーク環境での堅牢性が向上します。
class ReadOnlyFile:
...
def open_file(self, bucket: str, key: str, version_id: Optional[str] = None, request_payer: Optional[str] = None, **kwargs) -> ReadOnlyFile:
...リクエストパラメーター
パラメーター | タイプ | 説明 |
bucket | str | バケットの名前。 |
key | str | オブジェクトの名前。 |
version_id | str | 指定したオブジェクトのバージョン番号。このパラメーターは、オブジェクトの複数のバージョンが存在する場合にのみ有効です。 |
request_payer | str | リクエスト元支払いモードが有効になっている場合、RequestPayer を requester に設定する必要があります。 |
**kwargs | Any | オプション。構成するオプション (Dictionary タイプ)。 |
kwargs のオプション
オプション | タイプ | 説明 |
enable_prefetch | bool | プリフェッチモードを有効にするかどうかを指定します。デフォルトでは、プリフェッチモードは無効になっています。 |
prefetch_num | int | プリフェッチされるチャンクの数。デフォルト値:3。このオプションは、プリフェッチモードが有効になっている場合に有効です。 |
chunk_size | int | プリフェッチされる各チャンクのサイズ。デフォルト値:6。単位:MiB。このオプションは、プリフェッチモードが有効になっている場合に有効です。 |
prefetch_threshold | int | プリフェッチモードが有効になる前に順番に読み取られるバイト数。デフォルト値:20。単位:MiB。このオプションは、プリフェッチモードが有効になっている場合に有効です。 |
block_size | int | チャンクのサイズ。デフォルト値:なし。 |
レスポンスパラメーター
パラメーター | タイプ | 説明 |
file | ReadOnlyFile | ReadOnlyFile インスタンス。 |
ReadOnlyFile の共通メソッド
メソッド | 説明 |
close(self) | ファイルハンドルを閉じて、メモリやアクティブなソケットなどのリソースを解放します。 |
read(self, n=None) | データソースから長さ len(p) のバイトを読み取り、バイトを p に格納し、読み取られたバイト数と発生したエラーを返します。 |
seek(self, pos, whence=0) | 次の読み取りまたは書き込みのオフセットを指定します。whence の有効な値:0:先頭。1:現在のオフセット。2:末尾。 |
Stat() (os.FileInfo, error) | オブジェクトサイズ、最終更新時刻、メタデータなどのオブジェクト情報をクエリします。 |
注:プリフェッチモードが有効になっていて、複数の順序外れ読み取りが発生した場合、シングルストリームモードが自動的に使用されます。
例
関連情報
File-Like の詳細については、File-Like をご覧ください。