如何在Jupyter Notebook中以变量为参数运行命令行脚本?
解决Jupyter Notebook中用变量作为%run参数的问题
直接用%run裸写变量名时,Jupyter会把变量名当成字面字符串传给脚本,而不是变量的实际值,所以会报错。给你几个不用改脚本成函数的简单方案:
方案1:用!python替代%run(最简便)
Jupyter的shell命令支持用{变量名}直接插值,直接执行脚本就行:
suffix = '0001' !python /global/scripts/plot_modes.py {suffix} .5 0.5
如果你的参数需要带引号(比如包含空格),可以给变量加引号:
!python /global/scripts/plot_modes.py '{suffix}' .5 0.5
放到循环里也很方便:
suffix_list = ['0001', '0002', '0003'] for suffix in suffix_list: !python /global/scripts/plot_modes.py {suffix} .5 0.5
方案2:用get_ipython().run_line_magic执行带变量的%run
通过字符串拼接把变量值注入到%run的参数里,调用IPython的底层API执行:
suffix = '0001' get_ipython().run_line_magic('run', f"/global/scripts/plot_modes.py {suffix} .5 0.5")
循环版本:
suffix_list = ['0001', '0002', '0003'] for suffix in suffix_list: get_ipython().run_line_magic('run', f"/global/scripts/plot_modes.py {suffix} .5 0.5")
这两个方案都不需要修改原脚本,直接就能在循环里批量执行。
内容的提问来源于stack exchange,提问作者mojojojo
相关产品推荐
相关产品推荐

