DSX 개체 스토리지 기기에 CSV 데이터를 쓰기 위한 파이썬 코드
지난번에 읽었을 때 읽은 데이터가 명확하기 위해 그 데이터에서 인증 정보를 얻었고 이번에는 계산 처리 결과를 묘사하기 위해서였기 때문에 프로젝트에 대응하는 용기가 있어도 파일 이름에서 인증 정보를 얻지 못했다.그럼 어떻게 하면 좋을까요?
DSX에 로그인한 후 Data Service에서 컨테이너에 기록할 인증 정보를 찾았지만 아무 것도 없습니다.단, Bluemix PaaS에서 로그인하여 대상이 저장한 정보를 찾으면 용기의 인증 정보를 얻을 수 있다.
서비스 목록에서 DSX-ObjectStage로 전송합니다.
DSX-ObjectStorage 서비스 자격 정보를 표시하면 모든 용기, 즉 항목에 서비스 자격 정보를 생성하기 때문에 해당 용기의 서비스 자격 정보를 DSX의 Notebook에 복사하여 사용합니다.
이 블루믹스 측의 서비스 자격 정보에는 용기 이름이 없기 때문에 그 부분만 수동으로 추가하면 준비가 완료된다.
python 쓰기
from io import BytesIO
import requests
import numpy as np
import json
# オブジェクトストレージの認証情報
credentials_5 = {
'auth_url':'https://identity.open.softlayer.com',
'project':'object_storage_bc6cdc85_586e_4581_8a09_8f01f7bdf3ed',
'project_id':'2a9de4c1d50944a49f1a46dd53394158',
'region':'dallas',
'user_id':'********************************',
'domain_id':'fb119f3e1bc0469dad2b253b317ec7ea',
'domain_name':'952993',
'username':'***********************************************',
'password':"********************",
'container':'DefaultProjecttakarajpibmcom' <--- 手作業で追加する
}
def Write_CSV_to_ObjectStorage(credentials, npdata,label, fileName):
"""This functions returns a StringIO object containing
the file content from Bluemix Object Storage V3."""
csvData = ""
# Label データをCSVの先頭行へ書き込み
c = 0
for col in label:
if c > 0:
csvData = csvData + ','
csvData = csvData + col
c = c + 1
csvData = csvData + "\n"
# Numpy配列データを CSV形式テキストデータへ変換
rows, cols = np.shape(npdata)
for row in a:
c = 0
for col in row:
if c > 0:
csvData = csvData + ','
csvData = csvData + str(col)
c = c + 1
csvData = csvData + "\n"
# オブジェクトストレージ認証
url1 = ''.join(['https://identity.open.softlayer.com', '/v3/auth/tokens'])
data = {'auth': {'identity': {'methods': ['password'],
'password': {'user': {'name': credentials['username'],'domain': {'id': credentials['domain_id']},
'password': credentials['password']}}}}}
headers1 = {'Content-Type': 'application/json'}
resp1 = requests.post(url=url1, data=json.dumps(data), headers=headers1)
# 認証エラーが発生したら終了
if resp1.status_code != 201:
return False, resp1.status_code
resp1_body = resp1.json()
# オブジェクトストレージへ書込み
for e1 in resp1_body['token']['catalog']:
if(e1['type']=='object-store'):
for e2 in e1['endpoints']:
if(e2['interface']=='public'and e2['region']=='dallas'):
url2 = ''.join([e2['url'],'/', credentials['container'], '/', fileName])
s_subject_token = resp1.headers['x-subject-token']
headers2 = {'X-Auth-Token': s_subject_token, 'accept': 'application/json'}
resp2 = requests.put(url=url2, headers=headers2, data = csvData )
result = True
if resp2.status_code != 201:
print "ERROR ", resp2.status_code
result = False
return result, resp2.status_code
# メイン
# データ生成
x = np.linspace(0,1,60)
y = np.linspace(10,11,60)
# 一本の配列に変更 (x,y)の2次元配列
a = np.stack((x, y), axis=-1)
#print a
# データラベル
label = ["Time","Data"]
# オブジェクトストレージへ保存
rslt = Write_CSV_to_ObjectStorage(credentials_5, a, label,"testDataSet.csv")
print rslt
ew
사용법 설명
첫 번째 파라미터는 인증 정보다.두 번째 매개 변수는 데이터 배열에서num.py의 배열이고 데이터 열의 탭에 CSV 파일의 시작 줄을 삽입합니다.다음은 파일 이름(객체 저장 컨테이너에 저장된 객체 이름)입니다.rslt = Write_CSV_to_ObjectStorage(credentials_5, a, label,"testDataSet.csv")
반환 값이 성공하면 201Created가 추가됩니다.그 외에는 실패할 것이다.
Reference
이 문제에 관하여(DSX 개체 스토리지 기기에 CSV 데이터를 쓰기 위한 파이썬 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/MahoTakara/items/a319bce188fa6eda9601
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rslt = Write_CSV_to_ObjectStorage(credentials_5, a, label,"testDataSet.csv")
Reference
이 문제에 관하여(DSX 개체 스토리지 기기에 CSV 데이터를 쓰기 위한 파이썬 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MahoTakara/items/a319bce188fa6eda9601텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)