詳解Python在七牛云平臺的應(yīng)用(一)
七牛云七牛云是國內(nèi)領(lǐng)先的企業(yè)級云服務(wù)商。專注于以數(shù)據(jù)為核心的云計算業(yè)務(wù),圍繞富媒體場景推出了對象存儲、融合CDN、容器云、大數(shù)據(jù)、深度學(xué)習(xí)平臺等產(chǎn)品,并提供一站式視頻云解決方案,同時打造簡單,可信賴的解決方案平臺,幫助企業(yè)快速上云,創(chuàng)造更大的商業(yè)價值。
以上是官網(wǎng)介紹。
(一)在這里介紹一下Python怎么通過官方提供的庫對自己空間進行操作
首先需要注冊一個七牛的賬號,并創(chuàng)建一個Bucket,另外還需要在個人面板中的密匙中得到AK和SK.之后就能通過七牛的SDK對自己的空間進行操作了.
本文對上傳/下載/刪除 三個操作的方法進行說明:
1.通過七牛的開發(fā)者中心可以得到相關(guān)的官方文檔
2.可以看到python需要安裝七牛提供的庫,先在cmd中執(zhí)行以下語句:
pip install qiniu
3.之后請到個人界面得到自己的Accesskey和Secretkey.
4.根據(jù)官方文檔用python寫出適合自己的程序
(二)簡單描述下上傳的步驟
1.接口形式七牛云選擇HTTP協(xié)議作為基準(zhǔn)接口形式
2.上傳接口
用于單文件直傳,如果不用官方的SDK也可以使用multipart/from-data格式組織上傳數(shù)據(jù),可以參考官方文檔
3.上傳請求報文
上傳的請求主要分成三個
1)上傳授權(quán)憑證Token用于確認上傳者的身份是否能進行上傳操作
具體也有格式:<AccessKey>:<EncodedSign>:<EncodedPutPolicy>第二個第三個分別是加密簽名和上傳策略,都要經(jīng)過url-base64加密,上傳策略可以定義各種上傳的參數(shù),具體
的參數(shù)請見官方文檔.
2)文件用于上傳的文件的內(nèi)容
3)文件名
下面就是詳細的介紹
(三)三個操作方法
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)了一個小錯誤.')
其中bucket是上傳的空間,path是上傳文件存放的路徑,filename是文件的名字,key提供了對操作者的身份進行了鑒定 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))
因為這里的下載使用的是公共空間,并非是私有的,所以可以直接得到文件的url鏈接,這樣子可以直接通過requests庫和操作文件的方法進行保存到本地,下載私有空間的方法請見七牛云提
供的方法,這里不做介紹.
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)了一個小錯誤.(可能是空間并沒有這個文件)')
這里需要的是bucketer-空間的名字,為了和bucket這個類區(qū)分開;filename和key和上傳的時候使用的一樣.
(四)七牛云提供了很多官方的和非官方的一些API,可以很方便的對存貯在七牛云空間中的文件進行操作,這樣子可以使我們的一些工作更加方便和簡單.在后面幾周我會對我使用得七牛云
平臺上的一些API時遇到的一些好的和大家進行分享.
(五)這里提供一個我寫的上面操作的集合體供各位同學(xué)參考,代碼如下:
#七牛云上傳文件到空間內(nèi).
#請得到自己的secret和access key
#PS本來 AK 和SK 用了getpass庫,但是因為不支持,所以暫時屏蔽了.
#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)了一個小錯誤.')
#下載
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)了一個小錯誤.(可能是空間并沒有這個文件)')
#主體
def main():
#填寫你的 AK 和 SK
accesskey = input('請輸入您在七牛云的AccessKey:')
secretkey = input('請輸入您在七牛云的SecretKey:')
#鑒定身份
keyq=Auth(accesskey,secretkey)
#所要操作的空間
bucketname =input("請輸入要操作的空間(公開)名字:")
#判定操作類型
while 1:
order=input('請輸入你需要進行的操作:')
mode=order.split(' ')[0]
if mode == '上傳':
path=order.split(' ')[1]
fname=path.split('/')[-1:][0]
print('正在嘗試生成Token.請稍后..')
upload(bucketname,path,fname,keyq)
elif mode == '下載':
print('正在嘗試生成Token.請稍后..')
download(order.split(' ')[1],order.split(' ')[2])
elif mode == '更換':
if order.split(' ')[1] == '空間':
bucketname =input("請輸入您想要更改的空間(公開)名字:")
elif order.split(' ')[1] == 'AK':
#accesskey = getpass(prompt= '請輸入新的AK:')
accesskey = input( '請輸入新的AK:')
elif order.split(' ')[1] == 'SK':
#secretkey = getpass('請輸入新的SK:')
secretkey = input('請輸入新的SK:')
else:
print('您輸入的命令有誤')
elif mode == '刪除':
print('正在嘗試生成Token.請稍后..')
delete(bucketname,order.split(' ')[1],keyq)
elif mode =='退出':
break
else:
print('輸入的命令存在錯誤')
print('+---------------------------------------------------+')
print('|歡迎使用本Qiniu云的上傳下載程序,以下為使用方法 |')
print('|---------------------------------------------------|')
print('|1.清先輸入您的Accesskey和SecretKey進行鑒權(quán) |')
print('|2.之后請輸入您要進行操作的buket空間 |')
print('|3.上傳操作的命令為: 上傳 文件地址(帶后綴) |')
print('|4.下載操作的命令為: 下載 鏈接地址 本地路徑帶后綴) |')
print('|5.刪除操作的命令為: 刪除 空間中的文件名稱 |')
print('|6.更換bucket操作為: 更換 空間名 |')
print('|7.更換AKSK的操作為: 更換 AK/SK |')
print('|8.退出程序的操作為: 退出 |')
print('+---------------------------------------------------+')
main()
具體的使用效果如下:

總結(jié)
以上就是本文關(guān)于詳解Python在七牛云平臺的應(yīng)用(一)的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
Python批量創(chuàng)建迅雷任務(wù)及創(chuàng)建多個文件
其實不是真的創(chuàng)建了批量任務(wù),而是用python創(chuàng)建一個文本文件,每行一個要下載的鏈接,然后打開迅雷,復(fù)制文本文件的內(nèi)容,迅雷監(jiān)測到剪切板變化,彈出下載全部鏈接的對話框2016-02-02
python解決漢字編碼問題:Unicode Decode Error
最近在利用python讀取一個含有漢字的文檔時導(dǎo)致出現(xiàn)了亂碼,并報出了兩個錯誤,無奈只能上網(wǎng)找尋答案,后通過網(wǎng)友的幫助解決了這個問題,想著總結(jié)一下,下面這篇文章就主要介紹了python如何解決漢字編碼問題,有需要的朋友們可以參考借鑒。2017-01-01
在Python下進行UDP網(wǎng)絡(luò)編程的教程
這篇文章主要介紹了在Python下進行UDP網(wǎng)絡(luò)編程的教程,UDP編程是Python網(wǎng)絡(luò)編程部分的基礎(chǔ)知識,示例代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04
解決在Python編輯器pycharm中程序run正常debug錯誤的問題
今天小編就為大家分享一篇解決在Python編輯器pycharm中程序run正常debug錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
關(guān)于Numpy之repeat、tile的用法總結(jié)
這篇文章主要介紹了關(guān)于Numpy之repeat、tile的用法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

