swiftclient操作

# encoding=utf-8
from keystoneauth1 import session
from keystoneauth1.identity import v3
from swiftclient import client,ClientException


OS_USERNAME = 'admin'
OS_USER_DOMAIN_NAME = 'Default'
OS_PASSWORD = '123456'
OS_PROJECT_NAME = 'admin'
OS_PROJECT_DOMAIN_NAME = 'Default'
OS_AUTH_URL = 'http://192.169.113.11:35357/v3'

# Create a password auth plugin
auth = v3.Password(auth_url=OS_AUTH_URL,
                   username=OS_USERNAME,
                   password=OS_PASSWORD,
                   user_domain_name=OS_USER_DOMAIN_NAME,
                   project_name=OS_PROJECT_NAME,
                   project_domain_name=OS_PROJECT_DOMAIN_NAME)
# Create session
keystone_session = session.Session(auth=auth)
# Create swiftclient Connection
swift_conn = client.Connection(session=keystone_session)

# List the available containers (列出可用的容器)------------------------------
resp_headers, containers = swift_conn.get_account()
print("Response headers: %s" % resp_headers)
for container in containers:
    print(container)

# # List the available objects(列出可用对象)------------------------------
container = 'container-lsy'
resp_headers, objects = swift_conn.get_container(container)
print("Response headers: %s" % resp_headers)
for object in objects:
    print(object)

# # Create a new container(创建一个新容器)------------------------------
container = 'container-lsy2'
swift_conn.put_container(container)
resp_headers, containers = swift_conn.get_account()
if container in containers:
    print("The container was created")
for container in containers:
    print(container)

# # Create a new object with the contents of a local text file(创建具有本地文本文件内容的新对象)------------------------------
container = 'container-lsy'
with open('data/123.pdf', 'rb') as local:
    swift_conn.put_object(
        container,
        '123.pdf',
        contents=local,
        content_type='text/plain'
    )

## list object(列表对象)----------------------------------------
container = 'container-lsy'
resp_headers,body = swift_conn.get_object(container, '123.pdf')
print(resp_headers)

## Confirm presence of the object(确认物体的存在)------------------------------
obj = '123.pdf'
container = 'container-lsy'
try:
    resp_headers = swift_conn.head_object(container, obj)
    print('The object was successfully created')
except ClientException as e:
    if e.http_status == '404':
        print('The object was not found')
    else:
        print('An error occurred checking for the existence of the object')

# # # Download the created object(下载创建的对象)------------------------------
resp_headers, obj_contents = swift_conn.get_object(container, obj)
with open('local_copy.pdf', 'wb') as local:
    local.write(obj_contents)

# # Delete the created object(删除创建的对象) -------------------------------------
obj = '123.pdf'
container = 'container-lsy'
try:
    swift_conn.delete_object(container, obj)
    print("Successfully deleted the object")
except ClientException as e:
    print("Failed to delete the object with error: %s" % e)

文档:https://ecloud.10086.cn/op-help-center/develop/Swift Python SDK.pdf

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python程序员杂谈

使用DES实现真实数据加密的前奏(分析)

上篇文章里面用java实现了DES的核心算法,并且对外提供了一个比较简单的接口,可以直接使用,不过有一个问题就是这个算法只是核心,只能实现对64位二进制进行加密...

10650
来自专栏AIUAI

Caffe2 - (二十二) Detectron 之数据集加载与处理函数

如果处理新的数据集时,强烈推荐将数据集转化为 COCO json 格式,重用先有数据代码即可.

28830
来自专栏简单就是美!

Tomcat 7之无需JDK只需JRE与无需web.xm及J2SE 6.0之真实与谎言? 博客分类: Java TomcatJ2SEWeb

Tomcat 7之无需JDK只需JRE与无需web.xm及J2SE 6.0之真实与谎言?

14430
来自专栏Python程序员杂谈

java静态域:另类的HelloWorld

看《java核心技术》第四章讲到一个通过静态域实现的HelloWorld。大家自行测试:

11020
来自专栏Python程序员杂谈

抽象方法 具体方法 钩子方法

基本方法又可以分为三种:抽象方法(Abstract Method)、具体方法(Concrete Method)和钩子方法(Hook Method)。

34920
来自专栏Python程序员杂谈

重温设计模式之模板方法(Template Method)

先从模板方法模式开始说起吧,这个模式以前看的时候没有太注意,现在又看了一遍,发现这个模式了不得呀(路人甲:其实每个模式都了不得,嘿嘿)。就是想武侠剧中的飞叶伤人...

7610
来自专栏简单就是美!

Effective Java Second Edition中文版勘误列表 博客分类: Java Java出版ASPSUNBlog

EclipseJDK6 Effective Java Second Edition Examples:

7330
来自专栏Python程序员杂谈

tomcat中JVM内存分配简单实现

  如果JSP程序在操作大量数据时可能会出现这种错误:java.lang.OutOfMemoryError: Java heap space。

14640
来自专栏AIUAI

COCO 数据集目标检测等相关评测指标

[1] - 除非特别说明,APAPAP 和 ARARAR 一般是在多个 IoU(Intersection over Union) 值间取平均值. 具体地,采用了...

2.2K20
来自专栏AIUAI

目标检测进展slide - 代季峰

21120

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励