详解Python在七牛云平台的应用(一)

七牛云七牛云是国内领先的企业级云服务商。专注于以数据为核心的云计算业务,围绕富媒体场景推出了对象存储、融合CDN、容器云、大数据、深度学习平台等产品,并提供一站式视频云解决方案,同时打造简单,可信赖的解决方案平台,帮助企业快速上云,创造更大的商业价值。

以上是官网介绍。

(一)在这里介绍一下Python怎么通过官方提供的库对自己空间进行操作

首先需要注册一个七牛的账号,并创建一个Bucket,另外还需要在个人面板中的密匙中得到AK和SK.之后就能通过七牛的SDK对自己的空间进行操作了.

本文对上传/下载/删除 三个操作的方法进行说明:

1.通过七牛的开发者中心可以得到相关的官方文档

2.可以看到python需要安装七牛提供的库,先在cmd中执行以下语句:

pip install qiniu

3.之后请到个人界面得到自己的Accesskey和Secretkey.

4.根据官方文档用python写出适合自己的程序

(二)简单描述下上传的步骤

1.接口形式七牛云选择HTTP协议作为基准接口形式

2.上传接口

用于单文件直传,如果不用官方的SDK也可以使用multipart/from-data格式组织上传数据,可以参考官方文档

3.上传请求报文

上传的请求主要分成三个

1)上传授权凭证Token用于确认上传者的身份是否能进行上传操作

具体也有格式:<AccessKey>:<EncodedSign>:<EncodedPutPolicy>第二个第三个分别是加密签名和上传策略,都要经过url-base64加密,上传策略可以定义各种上传的参数,具体

的参数请见官方文档.

2)文件用于上传的文件的内容

3)文件名

下面就是详细的介绍

(三)三个操作方法

1.上传,下面代码:

#上传
def upload(bucket,path,filename,key):
  token = key.upload_token(bucket, filename, 3600)
  print('正在上传..')
  reform,inform = put_file(token, filename, path)
  if reform != None:
    print('已经成功地将{}->>{}'.format(filename,bucket))
  else:
    print('这里出现了一个小错误.')

其中bucket是上传的空间,path是上传文件存放的路径,filename是文件的名字,key提供了对操作者的身份进行了鉴定 token.

2.下载,见下方代码:

#下载
def download(url,path):
  r = requests.get(url)
  contenter=r.content
  with open(path,'wb') as filer:
    filer.write(contenter)
    filer.close()
  print("已经保存文件到{}".format(path))

因为这里的下载使用的是公共空间,并非是私有的,所以可以直接得到文件的url链接,这样子可以直接通过requests库和操作文件的方法进行保存到本地,下载私有空间的方法请见七牛云提

供的方法,这里不做介绍.

3.删除,见下方代码:

#删除
def delete(bucketer,filename,key):
  print('正在删除..')
  bucket = BucketManager(key)
  reform,fo = bucket.delete(bucketer, filename)
  if reform != None:
    print('已经成功地将{}->>X'.format(filename))
  else:
    print('这里出现了一个小错误.(可能是空间并没有这个文件)')

这里需要的是bucketer-空间的名字,为了和bucket这个类区分开;filename和key和上传的时候使用的一样.

(四)七牛云提供了很多官方的和非官方的一些API,可以很方便的对存贮在七牛云空间中的文件进行操作,这样子可以使我们的一些工作更加方便和简单.在后面几周我会对我使用得七牛云

平台上的一些API时遇到的一些好的和大家进行分享.

(五)这里提供一个我写的上面操作的集合体供各位同学参考,代码如下:

#七牛云上传文件到空间内.
#请得到自己的secret和access key
#PS本来 AK 和SK 用了getpass库,但是因为不支持,所以暂时屏蔽了.

#import SDK
from qiniu import Auth,put_file,etag,BucketManager
import qiniu.config
from getpass import getpass
import requests

#上传
def upload(bucket,path,filename,key):
  token = key.upload_token(bucket, filename, 3600)
  print('正在上传..')
  reform,inform = put_file(token, filename, path)
  if reform != None:
    print('已经成功地将{}->>{}'.format(filename,bucket))
  else:
    print('这里出现了一个小错误.')

#下载
def download(url,path):
  r = requests.get(url)
  contenter=r.content
  with open(path,'wb') as filer:
    filer.write(contenter)
    filer.close()
  print("已经保存文件到{}".format(path))
#删除
def delete(bucketer,filename,key):
  print('正在删除..')
  bucket = BucketManager(key)
  reform,fo = bucket.delete(bucketer, filename)
  if reform != None:
    print('已经成功地将{}->>X'.format(filename))
  else:
    print('这里出现了一个小错误.(可能是空间并没有这个文件)')

#主体
def main():
  #填写你的 AK 和 SK
  accesskey = input('请输入您在七牛云的AccessKey:')
  secretkey = input('请输入您在七牛云的SecretKey:')

  #鉴定身份
  keyq=Auth(accesskey,secretkey)

  #所要操作的空间
  bucketname =input("请输入要操作的空间(公开)名字:")

  #判定操作类型
  while 1:
    order=input('请输入你需要进行的操作:')
    mode=order.split(' ')[0]
    if mode == '上传':
      path=order.split(' ')[1]
      fname=path.split('/')[-1:][0]
      print('正在尝试生成Token.请稍后..')
      upload(bucketname,path,fname,keyq)
    elif mode == '下载':
      print('正在尝试生成Token.请稍后..')
      download(order.split(' ')[1],order.split(' ')[2])
    elif mode == '更换':
      if order.split(' ')[1] == '空间':
        bucketname =input("请输入您想要更改的空间(公开)名字:")
      elif order.split(' ')[1] == 'AK':
        #accesskey = getpass(prompt= '请输入新的AK:')
        accesskey = input( '请输入新的AK:')
      elif order.split(' ')[1] == 'SK':
        #secretkey = getpass('请输入新的SK:')
        secretkey = input('请输入新的SK:')
      else:
        print('您输入的命令有误')
    elif mode == '删除':
      print('正在尝试生成Token.请稍后..')
      delete(bucketname,order.split(' ')[1],keyq)

    elif mode =='退出':
      break
    else:
      print('输入的命令存在错误')

print('+---------------------------------------------------+')
print('|欢迎使用本Qiniu云的上传下载程序,以下为使用方法  |')
print('|---------------------------------------------------|')
print('|1.清先输入您的Accesskey和SecretKey进行鉴权     |')
print('|2.之后请输入您要进行操作的buket空间        |')
print('|3.上传操作的命令为: 上传 文件地址(带后缀)     |')
print('|4.下载操作的命令为: 下载 链接地址 本地路径带后缀) |')
print('|5.删除操作的命令为: 删除 空间中的文件名称     |')
print('|6.更换bucket操作为: 更换 空间名          |')
print('|7.更换AKSK的操作为: 更换 AK/SK           |')
print('|8.退出程序的操作为: 退出              |')
print('+---------------------------------------------------+')
main()

具体的使用效果如下:

总结

以上就是本文关于详解Python在七牛云平台的应用(一)的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • Python的Django中将文件上传至七牛云存储的代码分享

    最近在写的一个django小项目需要实现用户上传图片的功能,使用到了七牛云存储,特此记录下来.这里我使用的七牛python SDK 版本是7.0.3,函数使用上可能会与旧版有些不同. 原本文件上传需要先把文件上传到自己的业务服务器,再从业务服务器上传到云存储.现在七牛的表单上传可以直接把文件上传到七牛,不再需要业务服务器的中转,节省了流量成本,降低了业务服务器的压力.而且通过设置,还可以在文件上传完成后让客户端自动重定向到一个上传成功的结果页面.这里我就是使用了七牛的表单上传. 表单上传 用户上

  • 通过Python来使用七牛云存储的方法详解

    本教程旨在介绍如何使用七牛的Python SDK来快速地进行文件上传,下载,处理,管理等工作. 安装 首先,要使用Python的SDK必须要先安装.七牛的Python SDK是开源的,托管在Github上面,项目地址为https://github.com/qiniu/python-sdk. 安装的方式可以如项目的说明上所说,用pip install qiniu.当然也可以直接clone一份源代码下来直接使用.我一般喜欢直接clone源代码,这样的话,如果要对SDK做一些改动也是十分容易的. 最新

  • Python Web框架Flask中使用七牛云存储实例

    对于小型站点,使用七牛云存储的免费配额已足够为站点提供稳定.快速的存储服务 七牛云存储已有Python SDK,对它进行简单封装后,就可以直接在Flask中使用了,项目代码见GitHub上Flask-QiniuStorage. 使用示例代码: 复制代码 代码如下: from flask import Flask from flask_qiniustorage import Qiniu   QINIU_ACCESS_KEY = '七牛 Access Key' QINIU_SECRET_KEY =

  • 详解Python在七牛云平台的应用(一)

    七牛云七牛云是国内领先的企业级云服务商.专注于以数据为核心的云计算业务,围绕富媒体场景推出了对象存储.融合CDN.容器云.大数据.深度学习平台等产品,并提供一站式视频云解决方案,同时打造简单,可信赖的解决方案平台,帮助企业快速上云,创造更大的商业价值. 以上是官网介绍. (一)在这里介绍一下Python怎么通过官方提供的库对自己空间进行操作 首先需要注册一个七牛的账号,并创建一个Bucket,另外还需要在个人面板中的密匙中得到AK和SK.之后就能通过七牛的SDK对自己的空间进行操作了. 本文对上

  • 详解Python进阶之切片的误区与高级用法

    众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组...)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象.通常来说,切片的作用就是截取序列对象,然而,它还有一些使用误区与高级用法,都值得我们注意.所以,本文将主要跟大家一起来探讨这些内容,希望你能学有所获. 事先声明,切片并非列表的专属操作,但因为列表最具有代表性,所以,本文仅以列表为例作探讨. 1.切片的基础

  • 详解Python GUI编程之PyQt5入门到实战

    1. PyQt5基础 1.1 GUI编程学什么 大致了解你所选择的GUI库 基本的程序的结构:使用这个GUI库来运行你的GUI程序 各种控件的特性和如何使用 控件的样式 资源的加载 控件的布局 事件和信号 动画特效 界面跳转 设计工具的使用 1.2 PyQT是什么 QT是跨平台C++库的集合,它实现高级API来访问现代桌面和移动系统的许多方面.这些服务包括定位和定位服务.多媒体.NFC和蓝牙连接.基于Chromium的web浏览器以及传统的UI开发.PyQt5是Qt v5的一组完整的Python

  • 详解Python 3.10 中的新功能和变化

    随着最后一个alpha版发布,Python 3.10 的功能更改全面敲定! 现在,正是体验Python 3.10 新功能的理想时间!正如标题所言,本文将给大家分享Python 3.10中所有重要的功能和更改. 新功能1:联合运算符 在过去, |符号用于 "算术或"运算,例如: print(0 | 0) print(0 | 1) print({1, 2} | {2, 3}) 输出: 0 1 {1, 2, 3} 在Python 3.10中, |符号有的新语法,可以表示x类型 或 Y类型,以

  • 详解Python常用的魔法方法

    一.python魔法方法 Python的魔法方法会在特定的情况下自动调用,且他们的方法名通常被双下划线包裹,之前我们学习的构造函数和析构函数就属于魔法方法 二.运算符重载 Python中同样有运算符重载,其实所有的运算符都是使用了对应的魔法方法来处理的对象的,魔法方法对应的操作符如下 我们来举一个简单的例子 class A: def __init__(self,x): self.x = x def __add__(self,other): return int(self.x)+int(other

  • 详解Python描述符的工作原理

    一.前言 其实,在开发过程中,虽然我们没有直接使用到描述符,但是它在底层却无时不刻地被使用到,例如以下这些: function.bound method.unbound method 装饰器property.staticmethod.classmethod 是不是都很熟悉? 这些都与描述符有着千丝万缕的关系,这篇文章我们就来看一下描述符背后的工作原理. 二.什么是描述符? 在解释什么是「描述符」之前,我们先来看一个简单的例子. 这个例子非常简单,我们在类 A 中定义了一个类属性 x,然后打印它的

  • 详解Python自动化中这八大元素定位

    一.find_element_by_id() find_element_by_id() 1.从上面定位到的元素属性中,可以看到有个id属性:id="kw",这里可以通过它的id属性定位到这个元素. 2.定位到搜索框后,用send_keys()方法,就可以输入文本. from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com") # 通过id定

  • 详解Python中Pygame键盘事件

    Pygame事件 pygame.event.EventType ''' • 事件本质上是一种封装后的数据类型(对象) • EventType是Pygame的一个类,表示事件类型 • 事件类型只有属性,没有方法 • 用户可自定义新的事件类型 ''' 事件类型及属性 事件处理函数 键盘事件及类型的使用 键盘事件及属性 pygame.event.KEYDOWN #键盘按下事件 pygame.event.KEYUP #键盘释放事件 event.unicode #按键的unicode码,平台有关,不推荐使

  • 详解python网络进程

    目录 一.多任务编程 二.进程 三.os.fork创建进程 3.1.进程ID和退出函数 四.孤儿和僵尸 4.1.孤儿进程 4.2.僵尸进程 4.3.如何避免僵尸进程的产生 五.Multiprocessing创建进程 5.1.multiprocessing进程属性 六.进程池 七.进程间通信(IPC) 7.1.管道通信(Pipe) 7.2.消息队列 7.3.共享内存 7.4.信号量(信号灯集) 一.多任务编程 意义:充分利用计算机的资源提高程序的运行效率 定义:通过应用程序利用计算机多个核心,达到

  • 详解Python查找谁删了你的微信

    导语: 哈喽,哈喽~小编不知道你有没有经历过,想联系一位很长时间没有联系的朋友,发现对方很早以前已经把你删除了,而你还一无所知.反正小编经历过! 每个人的微信通信录里都存在一些「僵尸粉」,他们默默地躺在联系人列表中,你以为对方还是朋友,但是实际上,对方早已把你从好友列表中删了,那如何来筛选出这群人呢? 正文: 在开始编写脚本之前,需要做好如下准备工作 一部 Root 后的 Android 手机或者模拟器,如果没有 Root 的设备,推荐使用网易 MuMu 模拟器 Android 开发环境.And

随机推荐