简体   繁体   中英

save response from API to csv file

I am a new learner to python. I am working with some python code that calls an api and get a response in csv format. I would like to know how can I save that csv response to a 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()

Any help, advice would be greatly appreciated.

Thank you

Try this:

    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(','))

Edit:

I tested your request - it returns a json.

so you can save it as json:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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