通过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算法之栈(stack)的实现
Aug 18 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
Python面向对象编程基础解析(二)
Oct 26 Python
python实现决策树分类
Aug 30 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
python动态视频下载器的实现方法
Sep 16 Python
关于Tensorflow 模型持久化详解
Feb 12 Python
为什么python比较流行
Jun 19 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
详解tensorflow之过拟合问题实战
Nov 01 Python
基于Python实现股票收益率分析
Apr 02 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提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
起点页面传值js,有空研究学习下
2010/01/25 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
javascript学习之json入门
2016/12/22 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
理解Python垃圾回收机制
2016/02/12 Python
python常见排序算法基础教程
2017/04/13 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
python匿名函数的使用方法解析
2019/10/10 Python
pandas 空数据处理方法详解
2019/11/02 Python
python生成并处理uuid的实现方式
2020/03/03 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
Python3获取cookie常用三种方案
2020/10/05 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
营销主管自我评价怎么写
2013/09/19 职场文书
创先争优制度
2014/01/21 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
奉献家乡演讲稿
2014/09/13 职场文书
科技馆观后感
2015/06/08 职场文书
企业法律事务工作总结
2015/08/11 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python