Индексы String должны быть целыми, а не str - API

Jason Roldan спросил: 03 февраля 2018 в 12:02 в: python

У меня есть интересное поведение с моей программой.

У меня есть следующие методы:

def getMarket(self, Currency):
    return self.public_api('GetMarket/' + Currency + '_BTC')def getBalance(self, Currency):
    self.api_params.clear()
    self.api_params['Currency'] = Currency
    return self.private_api('GetBalance')


my_api = buyBot(API_KEY, API_SECRET)pumpCoin = my_api.getMarket('OSC')
pumpRawRate = pumpCoin['Data']['High']
pumpRawQty = .02
pumpBuyRate = my_api.calculateBuy(pumpRawRate)
pumpQty = float(pumpRawQty)/float(pumpBuyRate)
pumpSellRate = pumpCoin['Data']['Low']pumpSellCoin = my_api.getBalance('OSC')pumpSellAmount = pumpSellCoin["Data"]["Total"]print str(pumpRawRate) + '\n' + str(pumpBuyRate) + '\n' + str(pumpSellRate) + '\n' + str(pumpQty) + '\n' + str(pumpSellAmount)`

Из раздела: pumpCoin = my_api.getMarket('OSC') в pumpSellRate = pumpCoin['Data']['Low'] у меня нет проблем с получением информации и работой с ней.

Проблема, похоже, начинается с строки: pumpSellCoin = my_api.getBalance('OSC')

Я получаю следующее сообщение об ошибке:

  Traceback (most recent call last):
  File "C:\XXXXXX.py", line 92, in <module>
    pumpSellAmount = pumpSellCoin["Data"]["Total"]
TypeError: string indices must be integers, not str

, если я запускаю: print (my_api.getBalance('OSC'), я могу видеть все частную информацию API, которая извлекается этим вызовом, однако я не уверен, почему это создает мне проблему, когда я пытаюсь вызвать один конкретный элемент в стеке.

Сообщите мне, нужна ли вам дополнительная информация на этом.

Любая помощь будет принята с благодарностью.

Я просмотрел другие сообщения, и до сих пор я не могу понять, какая именно причина.

Это код private_api

def private_api(self, meth):
    time.sleep(1)
    params = self.api_params
    url = self.apisite + meth
    nonce = str(int(time.time()))
    post_data = json.dumps(params)
    hash = hashlib.md5()
    hash.update(post_data)
    base64hash = base64.b64encode(hash.digest())
    sig = self.apikey + "POST" + urllib.quote_plus(url).lower() + nonce + base64hash
    hmacsig = base64.b64encode(hmac.new(base64.b64decode(self.apisecret), sig, hashlib.sha256).digest())
    hdr = "amx " + self.apikey + ":" + hmacsig + ":" + nonce
    headers = { 'Authorization': hdr, 'Content-Type':'application/json; charset=utf-8' }
    request = urllib2.Request(url, data=post_data, headers=headers)
    return urllib2.urlopen(request).read()


0 ответов