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

批量生成多国家Jupyter Notebook分析HTML报告的脚本需求及问题

批量自动化Jupyter Notebook国家队列分析报告生成脚本

问题背景

现有一份名为OneHRHelpDeskTicketCountryReport.ipynb的Jupyter Notebook数据分析文件,手动流程为:

  • 替换顶部country变量为不同国家/队列值
  • 执行Notebook生成图表和表格
  • 运行!jupyter nbconvert OneHRHelpDeskTicketCountryReport.ipynb --no-input --no-prompt --to html生成无输入的HTML报告并重命名
  • 重复上述流程覆盖所有目标国家/队列

此前使用ChatGPT生成的脚本存在两个问题:

  1. country变量未被正确替换
  2. 未完成HTML报告转换

需要实现以下自动化功能:

  • 批量遍历指定国家/队列列表
  • 替换Notebook中的country变量
  • 执行Notebook生成分析结果
  • 转换为不含输入和提示的HTML报告

完整解决方案脚本

import papermill as pm
import nbformat
from nbconvert import HTMLExporter
import os

# 配置参数
SOURCE_NOTEBOOK = "OneHRHelpDeskTicketCountryReport.ipynb"
TARGET_DIR = "country_reports"
COUNTRIES = ["USA", "Canada", "UK", "Australia", "Germany"]  # 替换为你的目标国家/队列列表
KERNEL_NAME = "python3"  # 替换为你的Notebook使用的内核名称

# 创建目标目录
os.makedirs(TARGET_DIR, exist_ok=True)

for country in COUNTRIES:
    output_notebook = os.path.join(TARGET_DIR, f"report_{country}.ipynb")
    output_html = os.path.join(TARGET_DIR, f"report_{country}.html")

    try:
        # 1. 参数化执行Notebook,自动替换country变量
        pm.execute_notebook(
            input_path=SOURCE_NOTEBOOK,
            output_path=output_notebook,
            parameters={"country": country},
            kernel_name=KERNEL_NAME
        )

        # 2. 转换为无输入提示的HTML报告
        exporter = HTMLExporter()
        exporter.exclude_input = True
        exporter.exclude_input_prompt = True
        exporter.exclude_output_prompt = True

        # 读取执行后的Notebook并转换
        nb = nbformat.read(output_notebook, as_version=4)
        html_content, _ = exporter.from_notebook_node(nb)

        # 保存HTML文件
        with open(output_html, "w", encoding="utf-8") as f:
            f.write(html_content)

        print(f"✅ 完成{country}报告生成:{output_html}")

    except Exception as e:
        print(f"❌ 处理{country}时出错:{str(e)}")
        # 清理失败产生的临时文件
        if os.path.exists(output_notebook):
            os.remove(output_notebook)

关键步骤说明

  1. 参数化替换优化:放弃手动代码行替换,改用papermill实现参数化执行。需提前在源Notebook中设置参数单元格:

    在源Notebook中添加一个单元格,标记为「Parameters」(Jupyter工具栏可设置单元格标签),并写入:

    country = ""  # 此值会被papermill自动替换
    
  2. Notebook执行:papermill会完整运行所有单元格,自动生成并保存图表、表格等分析结果到输出Notebook中。

  3. HTML转换:使用nbconvert的HTMLExporter,通过配置参数确保HTML仅保留分析输出内容,剔除所有代码输入和提示信息。

  4. 异常处理:针对每个国家的处理流程添加异常捕获,出错时自动清理临时文件,避免残留无效文件。


内容的提问来源于stack exchange,提问作者Paulo Cortez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:32:45