Jupyter Notebook%run参数未评估

时间:2018-10-15 21:51:20

标签: python jupyter-notebook

我正在尝试从Jupyter笔记本中运行python程序,并将其传递给这样的变量:

docs = ['file1', 'file2']
for doc in docs:
    %run 'prog.py' doc

问题是“ doc”没有被评估并且按字面意义使用,在我的情况下,导致:[Errno 2]没有这样的文件或目录:'doc'

将-i添加到%run不会更改结果。

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

Jupyter Notebook用bash样式的$ name扩展变量。

在变量名前面加上“ $”是可行的:

docs = ['file1', 'file2', 'file 3', 'file\ 3']
for doc in docs:
    %run 'prog.py' $doc    # <- $doc instead of doc

请注意,您必须将文件名中的空格替换为'\',以便prog.py能够打开文件。在上面的示例中,您应该为“文件3”得到一个错误,但“文件\ 3”应该没问题。

来自the ipython doc所有带有“ $”前缀的表达式都会被扩展。有关语义规则的详细信息,请参见PEP-215:http://www.python.org/peps/pep-0215.html。这是IPython用于变量扩展的库。如果要访问真正的shell变量,则需要额外的$以防止其被IPython扩展