如何在循环中使用IPython %run魔法命令批量运行指定命名的ipynb笔记本
报错原因
你写的拼接方式不符合IPython魔术命令的变量替换规则:%run $i + str(j) + '.ipynb'中,IPython只会将$i替换为对应的字符,之后的+和其他内容会被识别为空格分隔的独立参数,因此系统只会尝试查找a.py文件,导致抛出找不到文件的异常。
可行实现方案
方案1:先拼接完整文件名再传入(最简便)
先把完整的笔记本文件名存为独立变量,再通过$变量名的格式传递给%run魔术命令即可,如果目标笔记本不在当前工作目录,拼接路径的时候把对应的目录前缀也加到文件名变量里即可。代码示例:
for i in ['a', 'b']: # 可自定义要运行的字母前缀 for j in [1, 2, 3]: # 可自定义要运行的数字序号 notebook_path = f"{i}{j}.ipynb" %run $notebook_path
方案2:直接调用IPython接口运行
如果需要更灵活的调用逻辑,也可以直接调用IPython内置接口执行魔术命令,代码示例:
for i in ['a', 'b']: for j in [1, 2, 3]: get_ipython().run_line_magic('run', f"{i}{j}.ipynb")
可选运行参数
如果需要控制运行行为,可以给%run加上对应参数:
- 加
-n参数:不执行笔记本中的%matplotlib inline等配置类魔法命令 - 加
-q参数:静默运行,不输出笔记本的执行内容
比如静默运行的写法:%run -q $notebook_path
内容的提问来源于stack exchange,提问作者user13867283
相关产品推荐
相关产品推荐

