Jupyter Notebook:我无法将一个值arg解析为变量,并基于该值从命令提示符下生成另一个笔记本

时间:2019-07-17 09:59:45

标签: jupyter-notebook argparse

我有一个笔记本,我称其为模板。我需要传递一个名为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作为另一个笔记本

1 个答案:

答案 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脚本运行吗?