通过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登录Dr.com思路以及代码分享
Jun 25 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
python简单实现基数排序算法
May 16 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
python实现弹窗祝福效果
Apr 07 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
pytorch中的卷积和池化计算方式详解
Jan 03 Python
Python生成词云的实现代码
Jan 14 Python
Python安装whl文件过程图解
Feb 18 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中的字符串函数
2006/10/09 PHP
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
php实现微信支付之企业付款
2018/05/30 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
javascript数组详解
2014/10/22 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
python openpyxl使用方法详解
2019/07/18 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
读书之星事迹材料
2014/05/12 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
Mysql数据库命令大全
2021/05/26 MySQL