python - 具有多个 papermill 命令的 Bash 脚本不会因笔记本错误而失败

标签 python bash jupyter-notebook jupyter papermill

我有一个 refresh_data.sh 文件,其中包含多个 papermill 命令,例如:

papermill notebook_1.ipynb output_1.ipynb -p start "2017-12-01" -p date "2017-12-31"
papermill notebook_2.ipynb output_2.ipynb -p start "2018-01-01" -p date "2018-01-31"

如果我在运行第一个笔记本时遇到错误,该进程将继续执行第二个笔记本。

换句话说,其中一个笔记本中的错误不会“破坏”整个脚本。

据我所知,对于普通的 python 脚本,如果 bash 脚本中的某个命令出现错误,就会中断整个脚本的执行。

在这种情况下,bash 脚本的标准行为是什么?我可以更改它以便在出现错误时立即停止吗?

最佳答案

如果您的 bash 脚本配置为:set -e 如果命令出错,它将失败:

Automatic exit from bash shell script on error

#!/bin/bash
set -e
# Any subsequent(*) commands which fail will cause the shell script to exit immediately

您可以使用以下方式运行造纸厂:

--log-output 获取有关笔记本失败原因的更多信息。

papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output

要捕获笔记本执行结果,您始终可以使用 $? 捕获任何先前命令的结果:

  papermill "${INPUT_NOTEBOOK_PATH}" "${OUTPUT_NOTEBOOK_PATH}" --log-output
  notebook_result=$?
  if [[ ${notebook_result} -eq 0 ]]; then
    echo "All good"
  else
    echo $notebook_result
  fi

关于python - 具有多个 papermill 命令的 Bash 脚本不会因笔记本错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55478353/

相关文章:

python - 在 Python 中使用学术模块进行搜索查询期间停止迭代

python - Tensorflow:损失值与精度不一致

python - pyQT Combobox 更改后打印输出

python - 使用环境变量在python中调用子进程

python - 根据条件分割 df 在 jupyter 中显示 nan 值

python - 限制pycurl中的文本下载内容

linux - 在没有管道的 awk 之后使用 ps

linux - 从一个 tty 登录到多个 tty

jupyter-notebook - 防止 Jupyter 屏幕在单元格评估后跳下

python - 如何垂直连接三个或更多图像?