通过Python来使用七牛云存储的方法详解


Posted in Python onAugust 07, 2015

本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作。
安装

首先,要使用Python的SDK必须要先安装。七牛的Python SDK是开源的,托管在Github上面,项目地址为https://github.com/qiniu/python-sdk。

安装的方式可以如项目的说明上所说,用pip install qiniu。当然也可以直接clone一份源代码下来直接使用。我一般喜欢直接clone源代码,这样的话,如果要对SDK做一些改动也是十分容易的。

最新版本的Python SDK需要依赖requests库,所以要提前安装好。安装方式当然也可以用pip install requests。
开发环境

Python的开发环境有很多种选择,如果喜欢文本的方式,比如vim,emacs,sublime text等都是很好的选择,如果你喜欢IDE,那么最流行的莫过于PyCharm了。PyCharm的最新版本到这里下载。
Access Key和Secret Key

我们知道七牛云存储的权限校验机制基于一对密钥,分别称为Access Key和Secret Key。其中Access Key是公钥,Secret Key是私钥。这一对密钥可以从七牛的后台获取。

通过Python来使用七牛云存储的方法详解

小试牛刀

好了,做了上面的这些准备工作,我们就去上传一个简单的文件,练练手。

#coding=utf-8
__author__ = 'jemy'
'''
本例演示了一个简单的文件上传。

这个例子里面,sdk根据文件的大小选择是Form方式上传还是分片上传。
'''
import qiniu

accessKey = "<Your Access Key>"
secretKey = "<Your Secret Key>"

#解析结果
def parseRet(retData, respInfo):
  if retData != None:
    print("Upload file success!")
    print("Hash: " + retData["hash"])
    print("Key: " + retData["key"])

    #检查扩展参数
    for k, v in retData.items():
      if k[:2] == "x:":
        print(k + ":" + v)

    #检查其他参数
    for k, v in retData.items():
      if k[:2] == "x:" or k == "hash" or k == "key":
        continue
      else:
        print(k + ":" + str(v))
  else:
    print("Upload file failed!")
    print("Error: " + respInfo.text_body)

#无key上传,http请求中不指定key参数
def upload_without_key(bucket, filePath):
  #生成上传凭证
  auth = qiniu.Auth(accessKey, secretKey)
  upToken = auth.upload_token(bucket, key=None)

  #上传文件
  retData, respInfo = qiniu.put_file(upToken, None, filePath)

  #解析结果
  parseRet(retData, respInfo)


def main():
  bucket = "if-pbl"
  filePath = "/Users/jemy/Documents/jemy.png"
  upload_without_key(bucket, filePath)


if __name__ == "__main__":
  main()

运行结果为:

Upload file success!
Hash: Fp0XR6tM4yZmeiKXw7eZzmeyYsq8
Key: Fp0XR6tM4yZmeiKXw7eZzmeyYsq8

从上面我们可以看到,使用七牛的Python SDK上传文件的最基本的步骤是:

  •     生成上传凭证
  •     上传文件
  •     解析回复结果

小结

综上所述,其实使用七牛的SDK来上传文件还是很简单的,接下来的教程,我们将在这个例子的基础上逐步了解更多关于文件上传的知识。

Python 相关文章推荐
python 判断一个进程是否存在
Apr 09 Python
Python的词法分析与语法分析
May 18 Python
Python学习笔记之os模块使用总结
Nov 03 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Python 迭代器与生成器实例详解
May 18 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
python 对txt中每行内容进行批量替换的方法
Jul 11 Python
Python爬取成语接龙类网站
Oct 19 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 #Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 #Python
举例详解Python中yield生成器的用法
Aug 05 #Python
Python中return语句用法实例分析
Aug 04 #Python
python函数形参用法实例分析
Aug 04 #Python
Python简明入门教程
Aug 04 #Python
将Python代码打包为jar软件的简单方法
Aug 04 #Python
You might like
深入php list()函数的详解
2013/06/05 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
JS 文件传参及处理技巧分析
2010/05/13 Javascript
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
vue+element树组件 实现树懒加载的过程详解
2019/10/21 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现压缩文件夹与解压缩zip文件的方法
2018/09/01 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
如何真正的了解python装饰器
2020/08/14 Python
HTML5实现多张图片上传功能
2016/03/11 HTML / CSS
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
食堂员工工作职责
2013/12/18 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
新农村建设典型材料
2014/05/31 职场文书
学习十八大演讲稿
2014/09/15 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
小学生作文批改评语
2014/12/25 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL