繁体   English   中英

Python流API数据输出,如何保存到csv?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM