PythonでConoHaのオブジェクトストレージ操作を行う方法2

「PythonでConoHaのオブジェクトストレージ操作を行う方法」の続きです。

Pythonを用いた、以下の操作をご紹介します。

  • コンテナの作成/削除
  • オブジェクトのアップロード/ダウンロード
  • オブジェクトのコピー/削除

条件

  • ConoHaオブジェクトストレージ
  • Windows 10 64bit
  • Python 3.7.0

サンプルソース全体

Pythonのサンプルソースを以下に示します。

次のような処理を関数として作成しています。

  • コンテナの作成/削除
  • オブジェクトのアップロード/ダウンロード
  • オブジェクトのコピー/削除
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# objectCRUD.py
import requests
import json
from logging import getLogger, StreamHandler, Formatter, DEBUG, FileHandler
from os import path
## ログ出力設定
logger = getLogger("オブジェクトストレージ操作")
logger.setLevel(DEBUG)
# コンソール出力設定
stream_handler = StreamHandler()
formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
# 接続パラメータ
USER_NAME = "gncu00000000"
PASSWORD = "passpasspass"
TENANT_ID = "9999999999999999999999999"
URL = 'https://identity.tyo2.conoha.io/v2.0/tokens'
OBJECT_STORAGE = 'https://object-storage.tyo2.conoha.io/v1/nc_9999999999999999999999999999'
# オブジェクトストレージ情報
CONTAINER1 = 'sample1'
CONTAINER2 = 'sample2'
OBJECT = '1.jpg'
UPLOAD_FILE = '2.jpg'
DWONLOAD_PATH = 'C:\\test\\downlaod.jpg'
def getToken():
"""
tokenの取得
"""
headers = {
'Accept': 'application/json',
}
data = '{"auth":{"passwordCredentials":{"username":"%s","password":"%s"},"tenantId":"%s"}}' % (USER_NAME, PASSWORD, TENANT_ID)
#logger.debug(data)
response = requests.post(URL, headers=headers, data=data)
data = response.json()
return json.dumps(data["access"]["token"]["id"], indent=4)
def createContainer(token):
"""
コンテナの作成
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)
return response
def deleteContainer(token):
"""
コンテナの削除
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)
return response
def uploadObject(token):
"""
オブジェクトのアップロード
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
with open(UPLOAD_FILE, 'rb') as image:
response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers, data=image)
return response
def downloadObject(token):
"""
オブジェクトのダウンロード
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.get(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
if response.status_code == 200:
with open(DWONLOAD_PATH, 'wb') as f:
for chunk in response.iter_content(1024): # chunk sizeは任意で指定可能
f.write(chunk)
return response
def copyObject(token):
"""
オブジェクトのコピー
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
'Destination': CONTAINER1 + '/' + UPLOAD_FILE,
}
response = requests.request(method='COPY', url=OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
return response
def deleteObject(token):
"""
オブジェクトの削除
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
return response
def main():
"""
実処理(main)
"""
token = getToken().replace('\"', '') # tokenの取得
result = createContainer(token) # コンテナの作成
logger.debug('コンテナの作成:' + str(result))
result = deleteContainer(token) # コンテナの削除
logger.debug('コンテナの削除:' + str(result))
result = uploadObject(token) # オブジェクトのアップロード
logger.debug('オブジェクトのアップロード:' + str(result))
result = downloadObject(token) # オブジェクトのダウンロード
logger.debug('オブジェクトのダウンロード:' + str(result))
result = copyObject(token) # オブジェクトのコピー
logger.debug('オブジェクトのコピー:' + str(result))
result = deleteObject(token) # オブジェクトの削除
logger.debug('オブジェクトの削除:' + str(result))
if __name__ == '__main__':
"""
main関数を実行
"""
main()
# objectCRUD.py import requests import json from logging import getLogger, StreamHandler, Formatter, DEBUG, FileHandler from os import path ## ログ出力設定 logger = getLogger("オブジェクトストレージ操作") logger.setLevel(DEBUG) # コンソール出力設定 stream_handler = StreamHandler() formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') stream_handler.setFormatter(formatter) logger.addHandler(stream_handler) # 接続パラメータ USER_NAME = "gncu00000000" PASSWORD = "passpasspass" TENANT_ID = "9999999999999999999999999" URL = 'https://identity.tyo2.conoha.io/v2.0/tokens' OBJECT_STORAGE = 'https://object-storage.tyo2.conoha.io/v1/nc_9999999999999999999999999999' # オブジェクトストレージ情報 CONTAINER1 = 'sample1' CONTAINER2 = 'sample2' OBJECT = '1.jpg' UPLOAD_FILE = '2.jpg' DWONLOAD_PATH = 'C:\\test\\downlaod.jpg' def getToken(): """ tokenの取得 """ headers = { 'Accept': 'application/json', } data = '{"auth":{"passwordCredentials":{"username":"%s","password":"%s"},"tenantId":"%s"}}' % (USER_NAME, PASSWORD, TENANT_ID) #logger.debug(data) response = requests.post(URL, headers=headers, data=data) data = response.json() return json.dumps(data["access"]["token"]["id"], indent=4) def createContainer(token): """ コンテナの作成 """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers) return response def deleteContainer(token): """ コンテナの削除 """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers) return response def uploadObject(token): """ オブジェクトのアップロード """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } with open(UPLOAD_FILE, 'rb') as image: response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers, data=image) return response def downloadObject(token): """ オブジェクトのダウンロード """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.get(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers) if response.status_code == 200: with open(DWONLOAD_PATH, 'wb') as f: for chunk in response.iter_content(1024): # chunk sizeは任意で指定可能 f.write(chunk) return response def copyObject(token): """ オブジェクトのコピー """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, 'Destination': CONTAINER1 + '/' + UPLOAD_FILE, } response = requests.request(method='COPY', url=OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers) return response def deleteObject(token): """ オブジェクトの削除 """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers) return response def main(): """ 実処理(main) """ token = getToken().replace('\"', '') # tokenの取得 result = createContainer(token) # コンテナの作成 logger.debug('コンテナの作成:' + str(result)) result = deleteContainer(token) # コンテナの削除 logger.debug('コンテナの削除:' + str(result)) result = uploadObject(token) # オブジェクトのアップロード logger.debug('オブジェクトのアップロード:' + str(result)) result = downloadObject(token) # オブジェクトのダウンロード logger.debug('オブジェクトのダウンロード:' + str(result)) result = copyObject(token) # オブジェクトのコピー logger.debug('オブジェクトのコピー:' + str(result)) result = deleteObject(token) # オブジェクトの削除 logger.debug('オブジェクトの削除:' + str(result)) if __name__ == '__main__': """ main関数を実行 """ main()
# objectCRUD.py

import requests
import json
from logging import getLogger, StreamHandler, Formatter, DEBUG, FileHandler
from os import path

## ログ出力設定
logger = getLogger("オブジェクトストレージ操作")
logger.setLevel(DEBUG)

# コンソール出力設定
stream_handler = StreamHandler()
formatter = Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)

# 接続パラメータ
USER_NAME = "gncu00000000"
PASSWORD = "passpasspass"
TENANT_ID = "9999999999999999999999999"
URL = 'https://identity.tyo2.conoha.io/v2.0/tokens'
OBJECT_STORAGE = 'https://object-storage.tyo2.conoha.io/v1/nc_9999999999999999999999999999'

# オブジェクトストレージ情報
CONTAINER1 = 'sample1'
CONTAINER2 = 'sample2'
OBJECT = '1.jpg'
UPLOAD_FILE = '2.jpg'
DWONLOAD_PATH = 'C:\\test\\downlaod.jpg'

def getToken():
    """
    tokenの取得
    """
    
    headers = {
        'Accept': 'application/json',
    }

    data = '{"auth":{"passwordCredentials":{"username":"%s","password":"%s"},"tenantId":"%s"}}' % (USER_NAME, PASSWORD, TENANT_ID)
    #logger.debug(data)

    response = requests.post(URL, headers=headers, data=data)
    data = response.json()

    return json.dumps(data["access"]["token"]["id"], indent=4)


def createContainer(token):
    """
    コンテナの作成
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }
    response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)

    return response


def deleteContainer(token):
    """
    コンテナの削除
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }
    response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)

    return response


def uploadObject(token):
    """
    オブジェクトのアップロード
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }

    with open(UPLOAD_FILE, 'rb') as image:
        response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers, data=image)

    return response


def downloadObject(token):
    """
    オブジェクトのダウンロード
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }

    response = requests.get(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
    
    if response.status_code == 200:
        with open(DWONLOAD_PATH, 'wb') as f:
            for chunk in response.iter_content(1024):  # chunk sizeは任意で指定可能
                f.write(chunk)

    return response


def copyObject(token):
    """
    オブジェクトのコピー
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
        'Destination': CONTAINER1 + '/' + UPLOAD_FILE,
    }

    response = requests.request(method='COPY', url=OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)

    return response


def deleteObject(token):
    """
    オブジェクトの削除
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }

    response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)

    return response


def main():
    """
    実処理(main)
    """
    
    token = getToken().replace('\"', '')  # tokenの取得

    result = createContainer(token)  # コンテナの作成
    logger.debug('コンテナの作成:' + str(result))
    
    result = deleteContainer(token)  # コンテナの削除
    logger.debug('コンテナの削除:' + str(result))
    
    result = uploadObject(token)  # オブジェクトのアップロード
    logger.debug('オブジェクトのアップロード:' + str(result))

    result = downloadObject(token)  # オブジェクトのダウンロード
    logger.debug('オブジェクトのダウンロード:' + str(result))

    result = copyObject(token)  # オブジェクトのコピー
    logger.debug('オブジェクトのコピー:' + str(result))

    result = deleteObject(token)  # オブジェクトの削除
    logger.debug('オブジェクトの削除:' + str(result))


if __name__ == '__main__':
    """
    main関数を実行
    """
    
    main()

コンテナの作成

ソース抜粋

以下の関数を実行します。
作成するコンテナ名は任意です。(ここでは「sample2」としています。)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def createContainer(token):
"""
コンテナの作成
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)
return response
def createContainer(token): """ コンテナの作成 """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers) return response
def createContainer(token):
    """
    コンテナの作成
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }
    response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)

    return response

実行結果

実行前

以下のようなコンテナが存在するものとします。
(オブジェクトストレージの確認には、Cyberduckを使用しています。)

実行後

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
C:\test>python objectCRUD.py
2019-09-03 10:29:22,019 - オブジェクトストレージ操作 - DEBUG - コンテナの作成:<Response [201]>
C:\test>
C:\test>python objectCRUD.py 2019-09-03 10:29:22,019 - オブジェクトストレージ操作 - DEBUG - コンテナの作成:<Response [201]> C:\test>
C:\test>python objectCRUD.py
2019-09-03 10:29:22,019 - オブジェクトストレージ操作 - DEBUG - コンテナの作成:<Response [201]>

C:\test>

「sample2」というコンテナが作成されました。

コンテナの削除

ソース抜粋

以下の関数を実行します。
「sample2」というコンテナを削除します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def deleteContainer(token):
"""
コンテナの削除
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)
return response
def deleteContainer(token): """ コンテナの削除 """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers) return response
def deleteContainer(token):
    """
    コンテナの削除
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }
    response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2, headers=headers)

    return response

実行結果

実行前

「sample2」というコンテナが存在します。

実行後

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
C:\test>python objectCRUD.py
2019-09-03 10:33:15,518 - オブジェクトストレージ操作 - DEBUG - コンテナの削除:<Response [204]>
C:\test>
C:\test>python objectCRUD.py 2019-09-03 10:33:15,518 - オブジェクトストレージ操作 - DEBUG - コンテナの削除:<Response [204]> C:\test>
C:\test>python objectCRUD.py
2019-09-03 10:33:15,518 - オブジェクトストレージ操作 - DEBUG - コンテナの削除:<Response [204]>

C:\test>

「sample2」というコンテナが削除されました。

オブジェクトのアップロード

ソース抜粋

以下の関数を実行します。
コンテナ「sample2」に「2.jpg」というオブジェクトをアップロードします。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def uploadObject(token):
"""
オブジェクトのアップロード
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
with open(UPLOAD_FILE, 'rb') as image:
response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers, data=image)
return response
def uploadObject(token): """ オブジェクトのアップロード """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } with open(UPLOAD_FILE, 'rb') as image: response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers, data=image) return response
def uploadObject(token):
    """
    オブジェクトのアップロード
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }

    with open(UPLOAD_FILE, 'rb') as image:
        response = requests.put(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers, data=image)

    return response

実行結果

実行前

「sample2」という空のコンテナが存在します。

実行後

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
C:\test>python objectCRUD.py
2019-09-03 10:41:26,255 - オブジェクトストレージ操作 - DEBUG - オブジェクトのアップロード:<Response [201]>
C:\test>
C:\test>python objectCRUD.py 2019-09-03 10:41:26,255 - オブジェクトストレージ操作 - DEBUG - オブジェクトのアップロード:<Response [201]> C:\test>
C:\test>python objectCRUD.py
2019-09-03 10:41:26,255 - オブジェクトストレージ操作 - DEBUG - オブジェクトのアップロード:<Response [201]>

C:\test>

「2.jpg」というオブジェクトがアップロードされました。

オブジェクトのダウンロード

ソース抜粋

以下の関数を実行します。

  • コンテナ「sample2」の「2.jpg」というオブジェクトをダウンロードします。
  • 今回はダウンロードオブジェクトを以下のパスで保存しています。
    C:\test\downlaod.jpg
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def downloadObject(token):
"""
オブジェクトのダウンロード
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.get(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
if response.status_code == 200:
with open(DWONLOAD_PATH, 'wb') as f:
for chunk in response.iter_content(1024): # chunk sizeは任意で指定可能
f.write(chunk)
return response
def downloadObject(token): """ オブジェクトのダウンロード """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.get(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers) if response.status_code == 200: with open(DWONLOAD_PATH, 'wb') as f: for chunk in response.iter_content(1024): # chunk sizeは任意で指定可能 f.write(chunk) return response
def downloadObject(token):
    """
    オブジェクトのダウンロード
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }

    response = requests.get(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
    
    if response.status_code == 200:
        with open(DWONLOAD_PATH, 'wb') as f:
            for chunk in response.iter_content(1024):  # chunk sizeは任意で指定可能
                f.write(chunk)

    return response

実行結果

実行前

実行後

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
C:\test>python objectCRUD.py
2019-09-03 10:48:49,391 - オブジェクトストレージ操作 - DEBUG - オブジェクトのダウンロード:<Response [200]>
C:\test>
C:\test>python objectCRUD.py 2019-09-03 10:48:49,391 - オブジェクトストレージ操作 - DEBUG - オブジェクトのダウンロード:<Response [200]> C:\test>
C:\test>python objectCRUD.py
2019-09-03 10:48:49,391 - オブジェクトストレージ操作 - DEBUG - オブジェクトのダウンロード:<Response [200]>

C:\test>

「downlaod.jpg」というオブジェクトがダウンロードされました。

オブジェクトのコピー

ソース抜粋

以下の関数を実行します。
コンテナ「sample2」の「2.jpg」というオブジェクトを、コンテナ「sample1」の「2.jpg」としてコピーします。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def copyObject(token):
"""
オブジェクトのコピー
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
'Destination': CONTAINER1 + '/' + UPLOAD_FILE,
}
response = requests.request(method='COPY', url=OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
return response
def copyObject(token): """ オブジェクトのコピー """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, 'Destination': CONTAINER1 + '/' + UPLOAD_FILE, } response = requests.request(method='COPY', url=OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers) return response
def copyObject(token):
    """
    オブジェクトのコピー
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
        'Destination': CONTAINER1 + '/' + UPLOAD_FILE,
    }

    response = requests.request(method='COPY', url=OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)

    return response

実行結果

実行前

実行後

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
C:\test>python objectCRUD.py
2019-09-03 10:56:59,353 - オブジェクトストレージ操作 - DEBUG - オブジェクトのコピー:<Response [201]>
C:\test>
C:\test>python objectCRUD.py 2019-09-03 10:56:59,353 - オブジェクトストレージ操作 - DEBUG - オブジェクトのコピー:<Response [201]> C:\test>
C:\test>python objectCRUD.py
2019-09-03 10:56:59,353 - オブジェクトストレージ操作 - DEBUG - オブジェクトのコピー:<Response [201]>

C:\test>

コンテナ「sample1」の「2.jpg」というオブジェクトが作成(コンテナ「sample2」の「2.jpg」からコピー)されていることがわかります。

オブジェクトの削除

ソース抜粋

以下の関数を実行します。
コンテナ「sample2」の「2.jpg」というオブジェクトを削除します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
def deleteObject(token):
"""
オブジェクトの削除
"""
headers = {
'Accept': 'application/json',
'X-Auth-Token': token,
}
response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)
return response
def deleteObject(token): """ オブジェクトの削除 """ headers = { 'Accept': 'application/json', 'X-Auth-Token': token, } response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers) return response
def deleteObject(token):
    """
    オブジェクトの削除
    """
    
    headers = {
        'Accept': 'application/json',
        'X-Auth-Token': token,
    }

    response = requests.delete(OBJECT_STORAGE + '/' + CONTAINER2 + '/' + UPLOAD_FILE, headers=headers)

    return response

実行結果

実行前

実行後

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
C:\test>python objectCRUD.py
2019-09-03 11:01:16,888 - オブジェクトストレージ操作 - DEBUG - オブジェクトの削除:<Response [204]>
C:\test>
C:\test>python objectCRUD.py 2019-09-03 11:01:16,888 - オブジェクトストレージ操作 - DEBUG - オブジェクトの削除:<Response [204]> C:\test>
C:\test>python objectCRUD.py
2019-09-03 11:01:16,888 - オブジェクトストレージ操作 - DEBUG - オブジェクトの削除:<Response [204]>

C:\test>

コンテナ「sample2」の「2.jpg」というオブジェクトが削除されました。

参考

stackoverflow:transpose curl PUT to requests.put

https://stackoverflow.com/questions/17256463/transpose-curl-put-to-requests-put

stackoverflow:How to download image using requests

https://stackoverflow.com/questions/13137817/how-to-download-image-using-requests

python-requests.org

https://2.python-requests.org//en/v0.5.0/api/#functions

ConoHa API Documantation

https://www.conoha.jp/docs/



PythonでConoHaのオブジェクトストレージ操作を行う方法2” に対して2件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です