使用Python将API请求添加到一个JSON中

2024-09-29 23:15:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始使用Python和API,想知道是否有办法完成下面的工作,我使用的API有从和到日期的参数,但是我需要每月的细分

apilink/getKwh?令牌={token}&;clientId={clientId}&;siteId={siteId}&;from={from}&;to={to}

{
    "data_json": [
        {
            "site": "Test Western Cape DC",
            "year": 2021,
            "month": "2021-01-01 - 2021-01-31",
            "total_kWh": {
                "grid_electricity": 708550.8319999998,
                "pv_electricity": 191839.79899999997
            }
        }
    ]
}

因此,我使用以下Python代码转储到JSON中:

from urllib.request import urlopen
import json
url = "apilink/getKwh?token={token}&clientId={clientId}&siteId={siteId}&from=2021-01-01&to=2021-01-31"
response = urlopen(url)
data = json.loads(response.read())

jsonString = json.dumps(data,data2)
jsonFile = open("data.json", "w")
jsonFile.write(jsonString)
jsonFile.close()

我将如何向正在转储的JSON文件添加额外的月份


Tags: tofromimporttokenapijsondataamp
3条回答

准备日期范围并在其上循环

from urllib.request import urlopen
import json

#
# TODO - replace with real values
#
dates = [{'from': 1, 'to': 1}, {'from': 2, 'to': 2}]
token = 't replace'
clientId = 'c replace'
siteId = 's replace'
for entry in dates:
    url = f"apilink/getKwh?token={token}&clientId={clientId}&siteId={siteId}&from={entry['from']}&to=entry['to']"
    response = urlopen(url)
    data = json.loads(response.read())

您应该这样做:

It will generate monthly JSON file using API response. If you want data in single file then let me know.
It will generate a JSON file like this name data-2021-01.json for each month

单个JSON文件的代码:

import calendar
from urllib.request import urlopen
import json

year = 2021
json_data = []

for month in range(1, 13):
    r = calendar.monthrange(year, month)
    start = f"{year}-{month:0>2d}-01"
    end = f"{year}-{month:0>2d}-{r[1]}"
    
    url = f"apilink/getKwh?token={token}&clientId={clientId}&siteId={siteId}&from={start}&to={end}"
    response = urlopen(url)
    data = json.loads(response.read())
    json_data.append(data)

with open('data.json', 'w') as file:
    json.dump(json_data,file, indent=4)

每月JSON的代码

import calendar
from urllib.request import urlopen
import json

year = 2021
json_data = []

for month in range(1, 13):
    r = calendar.monthrange(year, month)
    start = f"{year}-{month:0>2d}-01"
    end = f"{year}-{month:0>2d}-{r[1]}"
    filename = f'data-{year}-{month:0>2d}.json'
    
    url = f"apilink/getKwh?token={token}&clientId={clientId}&siteId={siteId}&from={start}&to={end}"
    response = urlopen(url)
    data = json.loads(response.read())

    json_data.append(data)

    with open(filename, 'w') as file:
        json.dump(data, file, indent=4)

可以使用calendar

import calendar

year = 2021

for month in range(1, 13):
    r = calendar.monthrange(year, month)
    start = f"{year}-{month:0>2d}-01"
    end = f"{year}-{month:0>2d}-{r[1]}"
    filename = f'data-{year}-{month:0>2d}.json'
    
    url = f"apilink/getKwh?token={token}&clientId={clientId}&siteId={siteId}&from={start}&to={end}"
    ...

相关问题 更多 >

    热门问题