首页 > 解决方案 > 函数在传递字符串时起作用,但在尝试传递存储在列表中的多个字符串时,它不起作用

问题描述

我有下面的代码正在工作,定义了一个包含一个字符串的列表和函数。这可以正常工作并返回我需要的数据

a = ["REQ-ETH"]

def klines_func(a):
    for i in a:
        klines = client.get_kline_data(a, '5min', 1507479171, 1510278278)
    return klines

但是,将 a 更改为 时["REQ-ETH","REQ-BTC"],代码不起作用(导致 API 异常错误,但是"REQ-BTC"单独尝试该对时,代码也可以正常工作)。


---------------------------------------------------------------------------
KucoinAPIException                        Traceback (most recent call last)
<ipython-input-34-2cf04cd53d1c> in <module>
----> 1 klines_func(a)

<ipython-input-26-45a04a1bad02> in klines_func(a)
      1 def klines_func(a):
      2     for i in a:
----> 3         klines = client.get_kline_data(a, '5min', 1507479171, 1510278278)
      4     return klines

/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in get_kline_data(self, symbol, kline_type, start, end)
   1833             data['endAt'] = int(time.time())
   1834 
-> 1835         return self._get('market/candles', False, data=data)
   1836 
   1837     # Websocket Endpoints

/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in _get(self, path, signed, **kwargs)
    185 
    186     def _get(self, path, signed=False, **kwargs):
--> 187         return self._request('get', path, signed, **kwargs)
    188 
    189     def _post(self, path, signed=False, **kwargs):

/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in _request(self, method, path, signed, **kwargs)
    156 
    157         response = getattr(self.session, method)(uri, **kwargs)
--> 158         return self._handle_response(response)
    159 
    160     @staticmethod

/opt/anaconda3/lib/python3.8/site-packages/kucoin/client.py in _handle_response(response)
    171 
    172             if 'code' in res and res['code'] != "200000":
--> 173                 raise KucoinAPIException(response)
    174 
    175             if 'success' in res and not res['success']:

KucoinAPIException: KucoinAPIException 400100: This pair is not provided at present.

本质上,这适用于一个字符串,但是当尝试使用 for 循环和多个字符串进行迭代时,它不起作用。我对 Python 很陌生,但感谢任何支持!

标签: pythonstringlistfunction

解决方案


如果client.get_kline_data需要一个字符串,那么你想用参数i而不是a在你的循环中调用这个函数。

在您当前的循环中,您没有使用i, 但是a,因此您实际上尝试使用整个列表多次调用 API 函数。


推荐阅读