阿里雲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')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM