Python SDK 手册

快速入门

请确认你已经熟悉 NOS 的基本概念,如 Bucket、Object、EndPoint、AccessKeyId 和 AccessKeySecret 等。 本节你将看到如何快速的使用 NOS PYTHON SDK,完成常用的操作,上传文件、下载文件等。

常用类

常用类备注
nos.ClientNOS 客户端类,用户通过 Client 调用服务
nos.exceptions.ServiceExceptionNOS 服务器返回的异常
nos.exceptions.ClientExceptionNOS 客户端抛出的异常

基本操作

上传文件

对象(Object)是 NOS 中最基本的数据单元,你可以把它简单的理解为文件,以下代码可以实现简单的对象上传:

import nos

access_key = "你的 accessKeyId"
secret_key = "你的 accessKeySecret"
end_point = "建桶时选择的的区域域名"
bucket = "使用的桶名,注意命名规则"
object = "使用的对象名,注意命名规则"
content = "Hello NOS!"

client = nos.Client(access_key, secret_key, end_point=end_point)

try:
  client.put_object(bucket, object, content)
except nos.exceptions.ServiceException as e:
  print (
    "ServiceException: %s\n"
    "status_code: %s\n"
    "error_type: %s\n"
    "error_code: %s\n"
    "request_id: %s\n"
    "message: %s\n"
  ) % (
  e,
  e.status_code,  # 错误 http 状态码
  e.error_type,   # NOS 服务器定义错误类型
  e.error_code,   # NOS 服务器定义错误码
  e.request_id,   # 请求 ID,有利于 nos 开发人员跟踪异常请求的错误原因
  e.message       # 错误描述信息
  )
except nos.exceptions.ClientException as e:
  print (
  "ClientException: %s\n"
  "message: %s\n"
  ) % (
  e,
  e.message       # 客户端错误信息
  )

Note

对象命名规则请参见 [API 手册 对象](/docs/product/nos/对象操作 - PUT Object)

下载文件

上传对象成功之后,你可以读取它的内容,以下代码可以实现文件的下载:

import nos

access_key = "你的 accessKeyId"
secret_key = "你的 accessKeySecret"
end_point = "建桶时选择的的区域域名"
bucket = "使用的桶名,注意命名规则"
object = "使用的对象名,注意命名规则"

client = nos.Client(access_key, secret_key, end_point=end_point)
try:
  result = client.get_object(bucket, object)
  fp = result.get("body")
  object_str = fp.read()
  print "object content: ", object_str
except nos.exceptions.ServiceException as e:
  print (
  "ServiceException: %s\n"
  "status_code: %s\n"
  "error_type: %s\n"
  "error_code: %s\n"
  "request_id: %s\n"
  "message: %s\n"
  ) % (
  e,
  e.status_code,  # 错误 http 状态码
  e.error_type,   # NOS 服务器定义错误类型
  e.error_code,   # NOS 服务器定义错误码
  e.request_id,   # 请求 ID,有利于 nos 开发人员跟踪异常请求的错误原因
  e.message       # 错误描述信息
  )
except nos.exceptions.ClientException as e:
  print (
  "ClientException: %s\n"
  "message: %s\n"
  ) % (
  e,
  e.message       # 客户端错误信息
  )

列举文件

当上传文件成功之后,可以查看桶中包含的文件列表,以下代码展示如何列举桶内的文件:

import nos

access_key = "你的 accessKeyId"
secret_key = "你的 accessKeySecret"
end_point = "建桶时选择的的区域域名"
bucket = "使用的桶名,注意命名规则"

client = nos.Client(access_key, secret_key, end_point=end_point)

try:
  object_lists = client.list_objects(bucket)
  for object_list in object_lists["response"].findall("Contents"):
    print object_list.find("Key").text, object_list.find("Size").text, object_list.find("LastModified").text
except nos.exceptions.ServiceException as e:
  print (
    "ServiceException: %s\n"
    "status_code: %s\n"
    "error_type: %s\n"
    "error_code: %s\n"
    "request_id: %s\n"
    "message: %s\n"
  ) % (
    e,
    e.status_code,  # 错误 http 状态码
    e.error_type,   # NOS 服务器定义错误类型
    e.error_code,   # NOS 服务器定义错误码
    e.request_id,   # 请求 ID,有利于 nos 开发人员跟踪异常请求的错误原因
    e.message       # 错误描述信息
  )
except nos.exceptions.ClientException as e:
  print (
    "ClientException: %s\n"
    "message: %s\n"
  ) % (
  e,
  e.message       # 客户端错误信息
  )

删除文件

文件上传成功后,可以指定删除桶中的文件,以下代码实现桶中文件的删除:

import nos

access_key = "你的 accessKeyId"
secret_key = "你的 accessKeySecret"
end_point = "建桶时选择的的区域域名"
bucket = "使用的桶名,注意命名规则"
object = "使用的对象名,注意命名规则"

client = nos.Client(access_key, secret_key, end_point=end_point)

try:
  client.delete_object(bucket, object)
except nos.exceptions.ServiceException as e:
  print (
    "ServiceException: %s\n"
    "status_code: %s\n"
    "error_type: %s\n"
    "error_code: %s\n"
    "request_id: %s\n"
    "message: %s\n"
  ) % (
    e,
    e.status_code,  # 错误 http 状态码
    e.error_type,   # NOS 服务器定义错误类型
    e.error_code,   # NOS 服务器定义错误码
    e.request_id,   # 请求 ID,有利于 nos 开发人员跟踪异常请求的错误原因
    e.message       # 错误描述信息
  )
except nos.exceptions.ClientException as e:
  print (
    "ClientException: %s\n"
    "message: %s\n"
  ) % (
    e,
    e.message       # 客户端错误信息
  )