通过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的绘图工具matplotlib使用实例
Jul 03 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
编写Python脚本来获取mp3文件tag信息的教程
May 04 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
Django中间件实现拦截器的方法
Jun 01 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python中if嵌套命令实例讲解
Feb 25 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时间戳转换的示例
2014/03/31 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
javascript 实用的文字链提示框效果
2010/06/30 Javascript
jquery实用代码片段集合
2010/08/12 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
医科学校毕业生自荐信
2013/11/09 职场文书
物流专业毕业生推荐信范文
2013/11/18 职场文书
创业计划书如何编写
2014/02/06 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
综合素质自我评价评语
2015/03/06 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
如何理解及使用Python闭包
2021/06/01 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS