通过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爬取网站数据保存使用的方法
Nov 20 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
python opencv 图像拼接的实现方法
Jun 27 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
Python Subprocess模块原理及实例
Aug 26 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
python爬虫中多线程的使用详解
Sep 23 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
python如何操作mysql
Aug 17 Python
Python趣味挑战之教你用pygame画进度条
May 31 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
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php上传文件问题汇总
2015/01/30 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
IE下js调试工具Companion.JS
2010/10/15 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
sklearn的predict_proba使用说明
2020/06/28 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
国际书籍零售商:Wordery
2017/11/01 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
应届毕业生应聘自荐信
2013/12/07 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
社区党务公开实施方案
2014/03/18 职场文书
甜品店创业计划书
2014/08/14 职场文书
法制教育演讲稿
2014/09/10 职场文书
美容院合作经营协议书
2014/10/10 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
2015新教师教学工作总结
2015/07/22 职场文书