首页 > 解决方案 > Jupyter notebook %run 参数未评估

问题描述

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

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

问题是“doc”没有被评估并且是按字面意思理解的,在我的情况下,这会导致:[Errno 2] No such file or directory: 'doc'

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

我究竟做错了什么?

标签: pythonjupyter-notebook

解决方案


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

在变量名前加一个 '$' 有效:

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

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

ipython 文档所有以 '$' 为前缀的表达式都得到扩展。有关语义规则的详细信息,请参阅 PEP-215: http: //www.python.org/peps/pep-0215.html。这是 IPython 用于变量扩展的库。如果你想访问一个真正的 shell 变量,一个额外的 $ 是必要的,以防止它被 IPython 扩展


推荐阅读