我有一个笔记本,我称其为模板。我需要传递一个名为ID ='EF12345'(字符串值)的变量作为参数,我的笔记本将基于该变量运行并创建一个新的笔记本
这些是我提到的几篇文章,我缺少了一些我不想弄清楚的地方 Argparse in Jupyter Notebook throws a TypeError
我无法进行点子安装(阻止-没有互联网)
Passing command line arguments to argv in jupyter/ipython notebook
原始代码 cold_mill_id ='E126644'
strip_stats = hive_ctx.sql(query).toPandas()
strip_stats[strip_stats.cold_mill_id == cold_mill_id]
sns.set(font_scale=1.2, font='DejaVu Sans')
fig, ax = plt.subplots(1, 1, figsize=(15, 6))
xp = df.position
yp = df.fm_entry_temperature
p = ax.plot(xp, yp, linestyle='-', label='fm_entry_temperature')
yp = df.fm_exit_temperature
p = ax.plot(xp, yp, linestyle='-', label='fm_exit_temperature')
p = ax.set_title('finishing mill temperature profiles for cold_mill_id=' +
cold_mill_id)
p = ax.set_xlabel('position')
p = ax.set_ylabel('temperature (F)')
p = ax.set_ylim(1650, 2100)
p = plt.legend()
我添加了argparse以获得我的冷轧机ID的价值
parser.add_argument('--id')
args = parser.parse_args([])
args, cold_mill_id = parser.parse_known_args()
我传递的ID不起作用,我无法传递ID-这是字符串,然后我的代码很烂 这就是我需要的
nbconvert --to notebook --execute Template.ipynb 'E12664'
我从解析器传递的ID不起作用,当ID的类型与预期的不匹配时,我也无法从命令行调试在执行的特定点发生的故障
在argparse之后添加了这段代码,以检查内部内容,但不会在命令行中显示
import sys
print(sys.argv)
我做错了什么我很笨 我需要的是我需要以某种方式将此ID传递给jupyter笔记本中的cold_mill_id,并将这些结果保存为新ID作为另一个笔记本
答案 0 :(得分:0)
当我尝试运行像您这样的命令行时,我得到:
1509:~$ jupyter nbconvert --to notebook --execute text.ipynb IPYQX
[NbConvertApp] WARNING | pattern 'IPYQX' matched no files
[NbConvertApp] Converting notebook text.ipynb to notebook
[NbConvertApp] Executing notebook with kernel: python3
[NbConvertApp] Writing 921 bytes to text.nbconvert.ipynb
换句话说,它将“ IPYQX”视为应该转换的另一个文件。这不是传递给笔记本的论点
使用笔记本电池,例如:
import sys
with open('test.txt', 'w') as f:
f.write(str(sys.argv))
f.write('\n')
我得到的文件如下:
1510:~$ cat test.txt
['/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py', '-f', '/tmp/tmpis4wjqdn.json']
这是传递到sys.argv
脚本以运行笔记本的launcher
。看起来与给nbconvert
的命令行没什么不同。
正如其他SO中所观察到的那样,我们无法将命令行值传递给笔记本。您不能将这段代码作为python脚本运行吗?