詳解Python在七牛云平臺(tái)的應(yīng)用(一)
七牛云七牛云是國(guó)內(nèi)領(lǐng)先的企業(yè)級(jí)云服務(wù)商。專注于以數(shù)據(jù)為核心的云計(jì)算業(yè)務(wù),圍繞富媒體場(chǎng)景推出了對(duì)象存儲(chǔ)、融合CDN、容器云、大數(shù)據(jù)、深度學(xué)習(xí)平臺(tái)等產(chǎn)品,并提供一站式視頻云解決方案,同時(shí)打造簡(jiǎn)單,可信賴的解決方案平臺(tái),幫助企業(yè)快速上云,創(chuàng)造更大的商業(yè)價(jià)值。
以上是官網(wǎng)介紹。
(一)在這里介紹一下Python怎么通過官方提供的庫(kù)對(duì)自己空間進(jìn)行操作
首先需要注冊(cè)一個(gè)七牛的賬號(hào),并創(chuàng)建一個(gè)Bucket,另外還需要在個(gè)人面板中的密匙中得到AK和SK.之后就能通過七牛的SDK對(duì)自己的空間進(jìn)行操作了.
本文對(duì)上傳/下載/刪除 三個(gè)操作的方法進(jìn)行說明:
1.通過七牛的開發(fā)者中心可以得到相關(guān)的官方文檔
2.可以看到python需要安裝七牛提供的庫(kù),先在cmd中執(zhí)行以下語句:
pip install qiniu
3.之后請(qǐng)到個(gè)人界面得到自己的Accesskey和Secretkey.
4.根據(jù)官方文檔用python寫出適合自己的程序
(二)簡(jiǎn)單描述下上傳的步驟
1.接口形式七牛云選擇HTTP協(xié)議作為基準(zhǔn)接口形式
2.上傳接口
用于單文件直傳,如果不用官方的SDK也可以使用multipart/from-data格式組織上傳數(shù)據(jù),可以參考官方文檔
3.上傳請(qǐng)求報(bào)文
上傳的請(qǐng)求主要分成三個(gè)
1)上傳授權(quán)憑證Token用于確認(rèn)上傳者的身份是否能進(jìn)行上傳操作
具體也有格式:<AccessKey>:<EncodedSign>:<EncodedPutPolicy>第二個(gè)第三個(gè)分別是加密簽名和上傳策略,都要經(jīng)過url-base64加密,上傳策略可以定義各種上傳的參數(shù),具體
的參數(shù)請(qǐng)見官方文檔.
2)文件用于上傳的文件的內(nèi)容
3)文件名
下面就是詳細(xì)的介紹
(三)三個(gè)操作方法
1.上傳,下面代碼:
#上傳 def upload(bucket,path,filename,key): token = key.upload_token(bucket, filename, 3600) print('正在上傳..') reform,inform = put_file(token, filename, path) if reform != None: print('已經(jīng)成功地將{}->>{}'.format(filename,bucket)) else: print('這里出現(xiàn)了一個(gè)小錯(cuò)誤.')
其中bucket是上傳的空間,path是上傳文件存放的路徑,filename是文件的名字,key提供了對(duì)操作者的身份進(jìn)行了鑒定 token.
2.下載,見下方代碼:
#下載 def download(url,path): r = requests.get(url) contenter=r.content with open(path,'wb') as filer: filer.write(contenter) filer.close() print("已經(jīng)保存文件到{}".format(path))
因?yàn)檫@里的下載使用的是公共空間,并非是私有的,所以可以直接得到文件的url鏈接,這樣子可以直接通過requests庫(kù)和操作文件的方法進(jìn)行保存到本地,下載私有空間的方法請(qǐng)見七牛云提
供的方法,這里不做介紹.
3.刪除,見下方代碼:
#刪除 def delete(bucketer,filename,key): print('正在刪除..') bucket = BucketManager(key) reform,fo = bucket.delete(bucketer, filename) if reform != None: print('已經(jīng)成功地將{}->>X'.format(filename)) else: print('這里出現(xiàn)了一個(gè)小錯(cuò)誤.(可能是空間并沒有這個(gè)文件)')
這里需要的是bucketer-空間的名字,為了和bucket這個(gè)類區(qū)分開;filename和key和上傳的時(shí)候使用的一樣.
(四)七牛云提供了很多官方的和非官方的一些API,可以很方便的對(duì)存貯在七牛云空間中的文件進(jìn)行操作,這樣子可以使我們的一些工作更加方便和簡(jiǎn)單.在后面幾周我會(huì)對(duì)我使用得七牛云
平臺(tái)上的一些API時(shí)遇到的一些好的和大家進(jìn)行分享.
(五)這里提供一個(gè)我寫的上面操作的集合體供各位同學(xué)參考,代碼如下:
#七牛云上傳文件到空間內(nèi). #請(qǐng)得到自己的secret和access key #PS本來 AK 和SK 用了getpass庫(kù),但是因?yàn)椴恢С?,所以暫時(shí)屏蔽了. #import SDK from qiniu import Auth,put_file,etag,BucketManager import qiniu.config from getpass import getpass import requests #上傳 def upload(bucket,path,filename,key): token = key.upload_token(bucket, filename, 3600) print('正在上傳..') reform,inform = put_file(token, filename, path) if reform != None: print('已經(jīng)成功地將{}->>{}'.format(filename,bucket)) else: print('這里出現(xiàn)了一個(gè)小錯(cuò)誤.') #下載 def download(url,path): r = requests.get(url) contenter=r.content with open(path,'wb') as filer: filer.write(contenter) filer.close() print("已經(jīng)保存文件到{}".format(path)) #刪除 def delete(bucketer,filename,key): print('正在刪除..') bucket = BucketManager(key) reform,fo = bucket.delete(bucketer, filename) if reform != None: print('已經(jīng)成功地將{}->>X'.format(filename)) else: print('這里出現(xiàn)了一個(gè)小錯(cuò)誤.(可能是空間并沒有這個(gè)文件)') #主體 def main(): #填寫你的 AK 和 SK accesskey = input('請(qǐng)輸入您在七牛云的AccessKey:') secretkey = input('請(qǐng)輸入您在七牛云的SecretKey:') #鑒定身份 keyq=Auth(accesskey,secretkey) #所要操作的空間 bucketname =input("請(qǐng)輸入要操作的空間(公開)名字:") #判定操作類型 while 1: order=input('請(qǐng)輸入你需要進(jìn)行的操作:') mode=order.split(' ')[0] if mode == '上傳': path=order.split(' ')[1] fname=path.split('/')[-1:][0] print('正在嘗試生成Token.請(qǐng)稍后..') upload(bucketname,path,fname,keyq) elif mode == '下載': print('正在嘗試生成Token.請(qǐng)稍后..') download(order.split(' ')[1],order.split(' ')[2]) elif mode == '更換': if order.split(' ')[1] == '空間': bucketname =input("請(qǐng)輸入您想要更改的空間(公開)名字:") elif order.split(' ')[1] == 'AK': #accesskey = getpass(prompt= '請(qǐng)輸入新的AK:') accesskey = input( '請(qǐng)輸入新的AK:') elif order.split(' ')[1] == 'SK': #secretkey = getpass('請(qǐng)輸入新的SK:') secretkey = input('請(qǐng)輸入新的SK:') else: print('您輸入的命令有誤') elif mode == '刪除': print('正在嘗試生成Token.請(qǐng)稍后..') delete(bucketname,order.split(' ')[1],keyq) elif mode =='退出': break else: print('輸入的命令存在錯(cuò)誤') print('+---------------------------------------------------+') print('|歡迎使用本Qiniu云的上傳下載程序,以下為使用方法 |') print('|---------------------------------------------------|') print('|1.清先輸入您的Accesskey和SecretKey進(jìn)行鑒權(quán) |') print('|2.之后請(qǐng)輸入您要進(jìn)行操作的buket空間 |') print('|3.上傳操作的命令為: 上傳 文件地址(帶后綴) |') print('|4.下載操作的命令為: 下載 鏈接地址 本地路徑帶后綴) |') print('|5.刪除操作的命令為: 刪除 空間中的文件名稱 |') print('|6.更換bucket操作為: 更換 空間名 |') print('|7.更換AKSK的操作為: 更換 AK/SK |') print('|8.退出程序的操作為: 退出 |') print('+---------------------------------------------------+') main()
具體的使用效果如下:
總結(jié)
以上就是本文關(guān)于詳解Python在七牛云平臺(tái)的應(yīng)用(一)的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Python實(shí)現(xiàn)批量梯度下降法(BGD)擬合曲線
這篇文章主要介紹了Python實(shí)現(xiàn)批量梯度下降法(BGD)擬合曲線,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python中l(wèi)ogging庫(kù)的使用總結(jié)
Python的logging模塊提供了通用的日志系統(tǒng),可以方便第三方模塊或者是應(yīng)用使用,下面這篇文章主要給大家介紹了關(guān)于python中l(wèi)ogging庫(kù)使用的一些知識(shí)總結(jié),文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。2017-10-10Python實(shí)現(xiàn)自動(dòng)添加腳本頭信息的示例代碼
這篇文章給大家介紹的一段腳本是自動(dòng)添加注釋信息的腳本,添加的信息包括腳本名稱、作者和時(shí)間等之類的,對(duì)于團(tuán)隊(duì)形成統(tǒng)一的編碼規(guī)則很有幫助。有需要的可以參考借鑒。2016-09-09Python更新數(shù)據(jù)庫(kù)腳本兩種方法及對(duì)比介紹
這篇文章給大家介紹了Python更新數(shù)據(jù)庫(kù)腳本兩種方法及數(shù)據(jù)庫(kù)查詢?nèi)N方式,然后在文章下面給大家介紹了兩種方式對(duì)比介紹,非常不錯(cuò),感興趣的朋友參考下吧2017-07-07pytorch建立mobilenetV3-ssd網(wǎng)絡(luò)并進(jìn)行訓(xùn)練與預(yù)測(cè)方式
這篇文章主要介紹了pytorch建立mobilenetV3-ssd網(wǎng)絡(luò)并進(jìn)行訓(xùn)練與預(yù)測(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02

Python復(fù)制目錄結(jié)構(gòu)腳本代碼分享