[英]Python streaming API data output, how to save it to csv?
我正在尝试使用流数据 API 进行一些新的操作,并将输出中的所有这些数据作为字典查看,但现在呢? 如何将转储转储到 csv 文件中,以便我可以用它做点什么?
# Initialize the `StreamingApiClient` service.
streaming_api_service = td_client.streaming_api_client()
# Stream equity bars
streaming_services.chart(
service=ChartServices.ChartEquity,
symbols=['QQQ'],
fields=ChartEquity.All
)
# Start Streaming.
streaming_api_service.open_stream()
实时输出到终端:
{'data': [{'command': 'SUBS',
'content': [{'1': 309.29,
'2': 309.29,
'3': 309.27,
'4': 309.27,
'5': 2.0,
'6': 611,
'7': 1654636260000,
'8': 19150,
'key': 'QQQ',
'seq': 538}],
'service': 'CHART_EQUITY',
'timestamp': 1654636324096}]}
此输出每分钟更新一次,直到脚本终止。 如何捕获它以便我可以附加到 CSV?
您可以使用 Python 的csv.DictWriter()
来帮助解决这个问题。 这需要一个字典并将其写成一行。 您似乎只需要某些字段,这可以通过忽略fieldnames
参数中不存在的字段来完成。 例如:
import csv
data = {'data': [{'command': 'SUBS',
'content': [{'1': 309.29,
'2': 309.29,
'3': 309.27,
'4': 309.27,
'5': 2.0,
'6': 611,
'7': 1654636260000,
'8': 19150,
'key': 'QQQ',
'seq': 538}],
'service': 'CHART_EQUITY',
'timestamp': 1654636324096}]}
req_fields = ["7", "1", "2", "3", "4", "5"]
with open("output.csv", "a", newline="") as f_output:
csv_output = csv.DictWriter(f_output, fieldnames=req_fields, extrasaction="ignore")
csv_output.writeheader() # only needed once
csv_output.writerow(data['data'][0]['content'][0])
这会给你output.csv
包含:
7,1,2,3,4,5
1654636260000,309.29,309.29,309.27,309.27,2.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.