我正在通过api和python websocket连接以流式传输数据。 数据以json格式到达。但是,我似乎无法将数据保存到本地驱动器中。 我尝试了熊猫数据帧:panda.DataFrame(json_data).to_csv(fileLoc,orient ='records')。它也不起作用。
任何专家的想法为何我似乎都无法将其保存下来...
import time
import base64
import hashlib
import hmac
from urllib.parse import urlencode
from urllib.request import Request, urlopen
import websocket
import json
import secrets
from datetime import datetime
import numpy as np
import pandas as pd
api_key = ''
api_secret = ''
tstamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "000"
data = ''
nonce = secrets.token_urlsafe(10)
base_signature_string = tstamp + "\n" + nonce + "\n" + data
byte_key = api_secret.encode()
message = base_signature_string.encode()
signature = hmac.new(byte_key, message, hashlib.sha256).hexdigest()
print(signature)
def main():
fileLoc = 'C://supp_1.json'
def on_message(ws, message):
#print("received:")
# what to do when receiving messages
#print(message)
T_msg = json.loads(message)['params']['data']
print(T_msg)
json.dump(T_msg, fileLoc)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
ws_data = \
{"jsonrpc": "2.0",
"method": "public/subscribe",
"id": 42,
"params": {
"channels": ["quote.BTC-PERPETUAL"]}
}
str = json.dumps(ws_data)
print(str)
ws.send(str)
#websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://test.deribit.com/ws/api/v2/",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
#if __name__ == "__main__":
# main()
main()
这是jupyter屏幕上的输出.....
{"jsonrpc": "2.0", "method": "public/subscribe", "id": 42, "params": {"channels": ["quote.BTC-PERPETUAL"]}}
{'timestamp': 1560872513030, 'instrument_name': 'BTC-PERPETUAL', 'best_bid_price': 9060.0, 'best_bid_amount': 280130.0, 'best_ask_price': 9060.5, 'best_ask_amount': 900.0}
{'timestamp': 1560872514860, 'instrument_name': 'BTC-PERPETUAL', 'best_bid_price': 9060.0, 'best_bid_amount': 280130.0, 'best_ask_price': 9061.5, 'best_ask_amount': 560.0}
{'timestamp': 1560872514892, 'instrument_name': 'BTC-PERPETUAL', 'best_bid_price': 9060.0, 'best_bid_amount': 280130.0, 'best_ask_price': 9061.5, 'best_ask_amount': 100.0}