通过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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
python实现rest请求api示例
Apr 22 Python
Python调用C语言开发的共享库方法实例
Mar 18 Python
python实现bucket排序算法实例分析
May 04 Python
简单实现python进度条脚本
Dec 18 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
Matplotlib配色之Colormap详解
Jan 05 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
7个关于Python的经典基础案例
Nov 07 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
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python实现探测socket和web服务示例
2014/03/28 Python
python实现简单socket通信的方法
2016/04/19 Python
Python 实现链表实例代码
2017/04/07 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
Django中ORM的基本使用教程
2020/12/22 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
巴西购物网站:Estrela10
2018/12/13 全球购物
最新大学生自我评价
2013/09/24 职场文书
社团成立邀请函
2014/01/08 职场文书
财务主管自我鉴定
2014/01/17 职场文书
党校学习党性分析材料
2014/12/19 职场文书
十月围城观后感
2015/06/08 职场文书
网络舆情信息简报
2015/07/21 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
Ajax实现异步加载数据
2021/11/17 Javascript
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫
Python安装使用Scrapy框架
2022/04/12 Python