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 条评论
登录 后参与评论

相关文章

  • 面向对象

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)

    周小董
  • [816]python之pprint

    pprint提供了以一种“pretty-print”的方式打印出任意python数据结构的模块。当然,如果不是python的基本数据类型,那么这种方式可能加载不...

    周小董
  • Python 的 urllib.parse 库解析 URL

    Python 中的 urllib.parse 模块提供了很多解析和组建 URL 的函数。

    周小董
  • 还在担心明天的天气吗?----API爬取各城市天气预报数据

    国内城市ID : http://cdn.heweather.com/china-city-list.txt

    孤独的明月
  • Linux命令之nohup

    语法:nohup Command [ Arg ... ] [ & ] 描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽...

    AsiaYe
  • 想跨端开发小程序?这个最流行的跨端框架一定要学习!

    从最早发布的微信小程序,到后来的支付宝小程序、字节跳动小程序、百度小程序、QQ小程序,还有最近发布的360小程序,面对这么多套的代码,开发者该如何开发呢?

    极乐君
  • 如何保证一个Spark Application只有一个SparkContext实例

    Spark有个关于是否允许一个application存在多个SparkContext实例的配置项, 如下:

    codingforfun
  • 让你的专属博客更加漂亮

    hexo+github搭建专属个人博客的教程很多,这里也就不再介绍了,当然你也可以点击阅读原文查看。但是在初始搭建完成后,需要进行很多配置,使得网站功能更加健全...

    编程珠玑
  • 如何打造自己的混合云

    近年来,许多企业都在以这种或那种方式利用云计算的诸多好处。在过去五年的过程中,云计算模式已经发展到支持多种新型的用例、用户和应用程序。通过云计算的发展,我们看到...

    静一
  • 谷歌新研究:基于数据共享的神经网络快速训练方法

    网络训练速度的提升对神经网络的发展至关重要。过去的研究着重于如何在 GPU 和更专业的硬件设备上进行矩阵和张量的相关运算,从而代替 CPU 进行网络训练。GPU...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券