昨天我開始爲cryptocurrency市場寫一個簡單的公告機器人。 在這一點上,我想閱讀股票行情(市場價格)並實時將數據保存到.json文件中。 Python的dump
函數可以做到這一點。到目前爲止,代碼如下所示
start = time.time()
while 1:
end = time.time()
raz = end - start
if raz >= 5:
for i in range(len(self.keys)):
self.dictTicker(self.values[i])
start = end
sleep(0.005)
self.dictTicker
是通過選定的市場進入和以.json文件
def dictTicker(self, market):
ticker = api.get_ticker(market)
self.data['year'] = datetime.now().year
self.data['month'] = datetime.now().month
self.data['day'] = datetime.now().day
self.data['hour'] = datetime.now().hour
self.data['min'] = datetime.now().minute
self.data['sec'] = datetime.now().second
self.data['bid'] = ticker['result']['Bid']
self.data['ask'] = ticker['result']['Ask']
self.data['last'] = ticker['result']['Last']
with open("{}.json".format(market), 'a') as f:
json.dump([self.data], f)
f.close()
以.json文件的例子則看起來像這樣保存數據的功能。
{"year": 2017, "month": 8, "day": 6, "hour": 6, "min": 38, "sec": 4, "bid": 0.00224, "ask": 0.00225999, "last": 0.00225999}{"year": 2017, "month": 8, "day": 6, "hour": 6, "min": 38, "sec": 9, "bid": 0.00223611, "ask": 0.00224, "last": 0.00224}
問題是這種格式{}{}
是錯誤的。它應該是{{}{}}
。或換句話說,字典列表,而不是多個字典。
當我嘗試閱讀我使用下面的代碼文件:
with open("BTC-SEC.json") as f:
a = json.load(f)
print(a)
我收到以下錯誤:
json.decoder.JSONDecodeError: Extra data: line 1 column 121 (char 120)
我已搜查堆棧,但我不能找到答案那會幫我。任何幫助將不勝感激。
作爲一個側面說明' {{},{}}'不是詞典列表(這是詞典的詞典),'[{},{}]'是詞典列表。 – abagshaw
追加到列表中,然後始終將完整列表作爲JSON寫入文件。 –