本文介紹如何使用Python SDK V2新增的File-Like介面訪問儲存空間的對象。
注意事項
本文範例程式碼以華東1(杭州)的地區ID
cn-hangzhou為例,預設使用外網Endpoint,如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS地區和訪問網域名稱。本文以從環境變數讀取存取憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
要進行檔案下載,您必須有
oss:GetObject許可權。具體操作,請參見為RAM使用者授予自訂的權限原則。
方法定義
Python SDK V2新增了File-Like介面,以唯讀檔案(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 | 啟用了要求者付費模式時,需要設定為'requester' |
**kwargs | Any | (可選)任意參數,類型為字典 |
其中,kwargs選項說明列舉如下:
參數名 | 類型 | 說明 |
enable_prefetch | bool | 是否啟用預模數式,預設不啟用 |
prefetch_num | int | 預取塊的數量,預設值為3。啟用預模數式時有效 |
chunk_size | int | 每個預取塊的大小,預設值為6MiB。啟用預模數式時有效 |
prefetch_threshold | int | 持續順序讀取多少位元組後進入到預模數式,預設值為20MiB。啟用預模數式時有效 |
block_size | int | 塊的大小,預設值為None |
傳回值列表
傳回值名 | 類型 | 說明 |
file | ReadOnlyFile | 唯讀檔案的執行個體 |
其中,ReadOnlyFile介面的常用方法列舉如下:
方法名 | 說明 |
close(self) | 關閉檔案控制代碼,釋放資源,例如記憶體,活動的socket 等 |
read(self, n=None) | 從資料來源中讀取長度為len(p)的位元組,儲存到p中,返回讀取的位元組數和遇到的錯誤 |
seek(self, pos, whence=0) | 用於設定下一次讀或寫的位移量。其中whence的取值:0:相對於頭部,1:相對於當前位移量,2:相對於尾部 |
Stat() (os.FileInfo, error) | 擷取對象的資訊,包括 對象大小,最後修改時間 以及元資訊 |
注意:當預模數式開啟時,如果出現多次亂序讀時,則會自動退回單流模式。
範例程式碼
相關文檔
關於類檔案唯讀更多資訊,請參見開發人員指南。