通过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开发微信支付的注意事项
Aug 19 Python
Python制作Windows系统服务
Mar 25 Python
python自动12306抢票软件实现代码
Feb 24 Python
python try 异常处理(史上最全)
Mar 07 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
浅析Python 引号、注释、字符串
Jul 25 Python
python二元表达式用法
Dec 04 Python
Python列表操作方法详解
Feb 09 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
Python实现手绘图效果实例分享
Jul 22 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
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
Document 对象的常用方法
2009/07/31 Javascript
将字符串中由空格隔开的每个单词首字母大写
2014/04/06 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
nodejs修复ipa处理过的png图片
2016/02/17 NodeJs
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python实现感知器算法(批处理)
2019/01/18 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
浅谈python 类方法/静态方法
2020/09/18 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
仓管员岗位职责范文
2013/11/08 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书