通过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中map、any、all函数用法分析
Apr 21 Python
pymongo给mongodb创建索引的简单实现方法
May 06 Python
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Python搭建FTP服务器的方法示例
Jan 19 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
Python 实现微信防撤回功能
Apr 29 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
在python中修改.properties文件的操作
Apr 08 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
Python使用sqlite3模块内置数据库
May 07 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 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下保存远程图片到本地的办法
2010/08/08 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
2012/02/27 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
Augularjs-起步详解
2016/07/08 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
2017/02/13 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
Python去除字符串两端空格的方法
2015/05/21 Python
Python ftp上传文件
2016/02/13 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
教师旷工检讨书
2014/01/18 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
保安2014年终工作总结
2014/12/06 职场文书
鼋头渚导游词
2015/02/05 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
部分武汉产收音机展览
2022/04/07 无线电