通过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之入门(四)运算
May 27 Python
python教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
浅谈python中set使用
Jun 30 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
python读取excel指定列数据并写入到新的excel方法
Jul 10 Python
python实现文本界面网络聊天室
Dec 12 Python
Python 硬币兑换问题
Jul 29 Python
python实现文件分片上传的接口自动化
Nov 19 Python
Python函数调用追踪实现代码
Nov 27 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
详解python的变量缓存机制
Jan 24 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
php之可变函数的实例详解
2017/09/13 PHP
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
学习Bootstrap组件之下拉菜单
2015/07/28 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
Python实现高效求解素数代码实例
2015/06/30 Python
python高阶爬虫实战分析
2018/07/29 Python
python实现石头剪刀布小游戏
2021/01/20 Python
python把1变成01的步骤总结
2019/02/27 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Python matplotlib可视化实例解析
2020/06/01 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
教育学专业实习生的自我鉴定
2013/11/26 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
国窖1573广告词
2014/03/21 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
公司股份合作协议书
2014/12/07 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫
python 镜像环境搭建总结
2022/09/23 Python