IPython 带有环境变量的笔记本魔术功能

IPython Notebook Magic Functions with environment variables

我可以使用具有魔法功能的环境变量,例如writefile in my ipthon notebook吗?

%env WORKING_DIR=/my/path/to/my/file
!echo $WORKING_DIR

/my/path/to/my/file

但是

%%writefile $WORKING_DIR/myfile.txt
sometext

IOError: [Errno 2] No such file or directory: '$WORKING_DIR/myfile.txt'

%%writefile $WORKING_DIR/myfile.txt 扩展 Python 变量。所以你需要有一个 WORKING_DIR python 变量才能工作。 $FOO 仅当您使用 shell 输出的魔法并且获得原始 $WORKING_DIR 字符串时才用作环境变量。在这种情况下 shell 进行变量扩展。

这是可能的,但很费劲地做你想做的事,请看下面的例子:

In [1]: foo = 'a.py'

In [2]: %%writefile $foo
   ...: hi
   ...:
Writing a.py

In [3]: %env BAR=b.py
env: BAR=b.py

In [4]: import os

In [5]: %%writefile {os.environ['BAR']}
   ...: this is bar
   ...:
Writing b.py