通过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实现baidu hi自动登录的代码
Feb 10 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
Python最长公共子串算法实例
Mar 07 Python
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
python 获取等间隔的数组实例
Jul 04 Python
python pyenv多版本管理工具的使用
Dec 23 Python
Python实现加密接口测试方法步骤详解
Jun 05 Python
浅析python中的del用法
Sep 02 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
Python初识逻辑与if语句及用法大全
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
第一节--面向对象编程
2006/11/16 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
jquery 利用show和hidden实现级联菜单示例代码
2013/08/09 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
python中in在list和dict中查找效率的对比分析
2018/05/04 Python
django允许外部访问的实例讲解
2018/05/14 Python
python处理csv中的空值方法
2018/06/22 Python
Python版名片管理系统
2018/11/30 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Python 中Operator模块的使用
2021/01/30 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
网络工程专业毕业生推荐信
2013/10/28 职场文书
电子商务专业推荐信范文
2013/12/02 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书