本文介紹如何使用OSS Python SDK列舉指定儲存空間(Bucket)下的所有檔案。
注意事項
本文範例程式碼以華東1(杭州)的地區ID
cn-hangzhou為例,預設使用外網Endpoint,如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS地區和訪問網域名稱。要列舉檔案,您必須有
oss:ListObjects許可權。具體操作,請參見為RAM使用者授予自訂的權限原則。
範例程式碼
您可以通過以下範例程式碼,使用ListObjectsV2介面列舉指定Bucket下的所有檔案。
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參數,則設定配置中的endpoint
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# 使用配置好的資訊建立OSS用戶端
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() # 指令碼入口,當檔案被直接運行時調用main函數常見使用情境
相關文檔
關於列舉檔案的完整範例程式碼,請參見list_objects_v2.py。