通过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 23 Python
Django自定义过滤器定义与用法示例
Mar 22 Python
python数字图像处理之高级形态学处理
Apr 27 Python
python2.7和NLTK安装详细教程
Sep 19 Python
Django重置migrations文件的方法步骤
May 01 Python
Django实现跨域的2种方法
Jul 31 Python
WxPython实现无边框界面
Nov 18 Python
Python-Flask:动态创建表的示例详解
Nov 22 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
通过实例简单了解python yield使用方法
Aug 06 Python
Python基于Faker假数据构造库
Nov 30 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
全国FM电台频率大全 - 18 湖南省
2020/03/11 无线电
example1.php
2006/10/09 PHP
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
关于PHP中Object对象的笔记分享
2011/06/28 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
jQuery解析返回的xml和json方法详解
2017/01/05 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
Python中基本的日期时间处理的学习教程
2015/10/16 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
Django中Forms的使用代码解析
2018/02/10 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
python如何输出反斜杠
2020/06/18 Python
客服部班长工作责任制
2014/02/25 职场文书
2014年征兵标语
2014/06/20 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
向女朋友道歉的话
2015/01/20 职场文书
档案工作个人总结
2015/03/03 职场文书
春节晚会开场白
2015/05/29 职场文书
运动会宣传语
2015/07/13 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python