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

如何通过Bash脚本传参并依次运行多个Jupyter Notebook

给Jupyter Notebook传递命令行参数的脚本改造方案

一、Notebook端准备:接收命令行参数

在每个需要接收参数的Notebook开头,添加代码获取传入的参数(以接收2个参数为例):

import sys

# 检查参数数量是否符合要求
if len(sys.argv) < 3:
    print("错误:需要传入至少2个参数")
    sys.exit(1)

# 提取参数
param1 = sys.argv[1]
param2 = sys.argv[2]
print(f"已接收参数:param1={param1}, param2={param2}")

二、Bash脚本改造:传递参数并批量运行Notebook

修改原脚本,使其支持接收外部参数并传递给每个Notebook:

#!/bin/bash
# 定义要运行的6个Notebook列表
notebooks=("notebook1.ipynb" "notebook2.ipynb" "notebook3.ipynb" "notebook4.ipynb" "notebook5.ipynb" "notebook6.ipynb")

# 检查脚本是否收到参数
if [ $# -eq 0 ]; then
    echo "使用方式:./run_notebooks.sh <参数1> <参数2> ..."
    exit 1
fi

# 逐个运行Notebook并传递参数
for nb in "${notebooks[@]}";do
    echo "开始运行:$nb"
    # 通过--ExecutePreprocessor.args将参数传递给Notebook
    jupyter nbconvert --to notebook --execute "$nb" --output "$nb" --ExecutePreprocessor.args="$*"
    
    # 检查当前Notebook是否运行成功
    if [ $? -ne 0 ]; then
        echo "$nb 运行失败,终止脚本"
        exit 1
    fi
    echo "$nb 运行完成"
done

echo "所有Notebook运行完毕"

关键说明:

  • $* 表示将脚本接收到的所有命令行参数原样传递给Notebook
  • --ExecutePreprocessor.args 是jupyter nbconvert的专属参数,用于给要执行的Notebook传递命令行参数
  • 脚本添加了参数检查和运行结果判断,避免无参数运行或单个Notebook失败后继续执行

使用方式

  1. 保存改造后的脚本为run_notebooks.sh
  2. 赋予执行权限:chmod +x run_notebooks.sh
  3. 运行脚本并传入参数:./run_notebooks.sh 测试参数1 测试参数2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:42:37