You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python代码遍历siteId列表将多站点数据写入JSON文件

调整后可遍历siteId列表的代码

import calendar
from urllib.request import urlopen
import json

# 请自行补充以下两个参数的实际取值
token = "你的实际token值"
clientId = "你的实际clientId值"
# 把需要拉取的所有站点ID放到这个列表即可
site_id_list = ['416', '414', '207', '233', '237', '251', '262', '276']
# 导出文件名调整为全站点标识,也可自定义命名规则
filename = f'{clientId}-all_sites.json'

def get_datas(year, site_id):
    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={site_id}&from={start}&to={end}"
        response = urlopen(url)
        data = json.loads(response.read())
        # 可选:给每条数据追加站点ID标识,方便后续区分数据归属
        data['siteId'] = site_id
        yield data

datas = []
# 外层新增站点ID遍历逻辑
for site_id in site_id_list:
    for year in (2019, 2020, 2021):
        datas.extend(get_datas(year, site_id))

with open(filename, "w", encoding="utf-8") as f:
    json.dump(datas, f, indent=4, ensure_ascii=False)

核心改动说明

  • 将原代码单个siteId变量替换为site_id_list列表,可灵活自定义需要拉取的站点范围
  • 给get_datas函数新增site_id入参,替换原函数调用的全局siteId变量,避免遍历冲突
  • 新增编码参数避免导出的JSON文件出现中文乱码问题
  • 若需要每个站点单独导出一个JSON文件,只需把文件写入逻辑放到站点遍历循环内即可,示例如下:
for site_id in site_id_list:
    datas = []
    for year in (2019, 2020, 2021):
        datas.extend(get_datas(year, site_id))
    # 每个站点生成独立的导出文件
    filename = f'{clientId}-{site_id}.json'
    with open(filename, "w", encoding="utf-8") as f:
        json.dump(datas, f, indent=4, ensure_ascii=False)

内容的提问来源于stack exchange,提问作者Taariq Toffar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:36:01