将 API 的响应保存到 csv 文件

save response from API to csv file

提问人:WindSwept 提问时间:6/25/2021 最后编辑:martineauWindSwept 更新时间:6/25/2021 访问量:2750

问:

我是python的新学习者。我正在使用一些调用 api 并获得 csv 格式响应的 python 代码。我想知道如何将 csv 响应保存到 csv fie。

#! /usr/bin/env python
import httplib2
# These aren't needed, just for this example
from pprint import pformat

from datetime import datetime
import pytz

from pvlive_api import PVLive

import pandas as pd
import json


def post_elexon(url):
    http_obj = httplib2.Http()
    resp, content = http_obj.request(
        uri=url,
        method='GET',
        headers={'Content-Type': 'application/xml; charset=UTF-8'},)
    return resp, content

def main():
    resp, content = post_elexon(url='https://api.bmreports.com/BMRS/B1770/v1?APIKey=MY_API_KEY&SettlementDate=2015-03-01&Period=1&ServiceType=csv',)
    print ("===Response===")
    print (resp)
    
    print ("===Content===")
    print (pformat(content))
    print ("===Finished===")


if __name__ == "__main__":
    main()

任何帮助,建议将不胜感激。

谢谢

python api csv httplib2

评论

1赞 jarmod 6/25/2021
请参阅在 Python 中读取和写入 CSV 文件或规范的 CSV 文档

答:

1赞 Benjamin T. Schwertfeger 6/25/2021 #1

试试这个:

    import csv
    
    with open('out.csv', 'w') as f:
        writer = csv.writer(resp)
        for line in resp.iter_lines():
            writer.writerow(line.decode('utf-8').split(','))

编辑:

我测试了您的请求 - 它返回一个 json。

因此,您可以将其保存为 json:

with open('response.json', 'w') as f:
    json.dump(resp, f)

评论

0赞 WindSwept 6/25/2021
感谢您的回复,但我收到错误:参数 1 必须具有“写入”方法。代码应该从哪里开始:打开.....被安置?
0赞 WindSwept 6/25/2021
为此,它不会产生任何错误,但是在哪里创建/保存json文件?
1赞 WindSwept 6/25/2021
忽略我的最后一条评论,我可以看到它,如果我给 out.csv 提供文件路径,例如使用 open('C:\Test\response.json),我可以设置保存 json 的位置吗?
0赞 WindSwept 6/26/2021
感谢所有的帮助。我真的很感激。如果我想将 api 调用(content)返回的内容写入 csv 文件 - 如何实现?
0赞 Benjamin T. Schwertfeger 6/26/2021
您的内容采用XML格式。我没有有效的 API 密钥来读取真实内容及其属性。看看这些: geeksforgeeks.org/convert-xml-to-csv-in-pythonstackoverflow.com/questions/31844713/convert-xml-to-csv-file 将XML转换为csv。祝你好运。(: