阿里雲OSS ,python SDK 快速入門,包括建立存儲空間、上傳、下載、列舉、刪除文件等

# -*- coding: utf-8 -*-
   
  import os
  import shutil
   
  import oss2
   
   
  # 如下代碼展現了基本的文件上傳、下載、羅列、刪除用法。
   
   
  # 首先初始化AccessKeyId、AccessKeySecret、Endpoint等信息。
  # 經過環境變量獲取,或者把諸如「<你的AccessKeyId>」替換成真實的AccessKeyId等。
  #
  # 以杭州區域爲例,Endpoint能夠是:
  # http://oss-cn-hangzhou.aliyuncs.com
  # https://oss-cn-hangzhou.aliyuncs.com
  # 分別以HTTP、HTTPS協議訪問。
  access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', '<你的AccessKeyId>')
  access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', '<你的AccessKeySecret>')
  bucket_name = os.getenv('OSS_TEST_BUCKET', '<你的Bucket>')
  endpoint = os.getenv('OSS_TEST_ENDPOINT', '<你的訪問域名>')
   
   
  # 確認上面的參數都填寫正確了
  for param in (access_key_id, access_key_secret, bucket_name, endpoint):
  assert '<' not in param, '請設置參數:' + param
   
   
  # 建立Bucket對象,全部Object相關的接口均可以經過Bucket對象來進行
  bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
   
   
  # 上傳一段字符串。Object名是motto.txt,內容是一段名言。
  bucket.put_object('motto.txt', 'Never give up. - Jack Ma')
   
  # 獲取Object的metadata
  object_meta = bucket.get_object_meta('你的對象名')
  print('last modified: ' + object_meta.last_modified)
  print('etag: ' + object_meta.etag)
  print('size: ' + object_meta.content_length)
   
  # 下載到本地文件
  bucket.get_object_to_file('motto.txt', '本地文件名.txt')
   
   
  # 把剛剛上傳的Object下載到本地文件 「座右銘.txt」 中
  # 由於get_object()方法返回的是一個file-like object,因此咱們能夠直接用shutil.copyfileobj()作拷貝
  with open(oss2.to_unicode('本地座右銘.txt'), 'wb') as f:
  shutil.copyfileobj(bucket.get_object('motto.txt'), f)
   
   
  # 把本地文件 「座右銘.txt」 上傳到OSS,新的Object叫作 「個人座右銘.txt」
  # 注意到,此次put_object()的第二個參數是file object;而上次上傳是一個字符串。
  # put_object()可以識別不一樣的參數類型
  with open(oss2.to_unicode('本地座右銘.txt'), 'rb') as f:
  bucket.put_object('雲上座右銘.txt', f)
   
   
  # 上面兩行代碼,也能夠用下面的一行代碼來實現
  bucket.put_object_from_file('雲上座右銘.txt', '本地座右銘.txt')
   
   
  # 列舉Bucket下10個Object,並打印它們的最後修改時間、文件名
  for i, object_info in enumerate(oss2.ObjectIterator(bucket)):
  print("{0} {1}".format(object_info.last_modified, object_info.key))
   
  if i >= 9:
  break
   
   
  # 刪除名爲motto.txt的Object
  bucket.delete_object('motto.txt')
   
  # 也能夠批量刪除
  # 注意:重複刪除motto.txt,並不會報錯
  bucket.batch_delete_objects(['motto.txt', '雲上座右銘.txt'])
   
   
  # 確認Object已經被刪除了
  assert not bucket.object_exists('motto.txt')
   
   
  # 獲取不存在的文件會拋出oss2.exceptions.NoSuchKey異常
  try:
  bucket.get_object('雲上座右銘.txt')
  except oss2.exceptions.NoSuchKey as e:
  print(u'已經被刪除了:request_id={0}'.format(e.request_id))
  else:
  assert False
   
  # 清除本地文件
  os.remove(u'本地文件名.txt')
  os.remove(u'本地座右銘.txt')
相關文章
相關標籤/搜索