我正在尝试从Jupyter笔记本中运行python程序,并将其传递给这样的变量:
docs = ['file1', 'file2']
for doc in docs:
%run 'prog.py' doc
问题是“ doc”没有被评估并且按字面意义使用,在我的情况下,导致:[Errno 2]没有这样的文件或目录:'doc'
将-i添加到%run不会更改结果。
我在做什么错了?
答案 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扩展