通过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 相关文章推荐
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
python利用正则表达式提取字符串
Dec 08 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
python保存文件方法小结
Jul 27 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
Django继承自带user表并重写的例子
Nov 18 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
python简单实现插入排序实例代码
Dec 16 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 危险函数全解析
2009/09/09 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
Jquery ui css framework
2010/06/28 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
JS实现div居中示例
2014/04/17 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Django实现表单验证
2018/09/08 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
parser.add_argument中的action使用
2020/04/20 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
会计学应届毕业生推荐信
2013/11/04 职场文书
军训感想500字
2014/02/20 职场文书
小学毕业演讲稿
2014/04/25 职场文书
公民代理授权委托书
2014/09/24 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android