通过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中3种内建数据结构:列表、元组和字典
Nov 30 Python
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
Jul 05 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 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
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
微信小程序反编译的实现
2020/12/10 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
pytyon 带有重复的全排列
2013/08/13 Python
python3图片转换二进制存入mysql
2013/12/06 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
2018/11/21 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
工伤事故赔偿协议书范文
2014/09/24 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
贷款承诺书
2015/01/20 职场文书