How to pass a variable to magic ´run´ function in IPython How to pass a variable to magic ´run´ function in IPython python python

How to pass a variable to magic ´run´ function in IPython


IPython expands variables with $name, bash-style. This is true for all magics, not just %run.

So you would do:

In [1]: filename = "myscript.py"In [2]: %run $filename['myscript.py']

myscript.py contains:

import sysprint(sys.argv)

Via Python's fancy string formatting, you can even put expressions inside {}:

In [3]: args = ["arg1", "arg2"]In [4]: %run $filename {args[0]} {args[1][-2:]}['myscript.py', 'arg1', 'g2']


Use get_ipython() to get a reference to the current InteractiveShell, then call the magic() method:

In [1]: ipy = get_ipython()In [2]: ipy.magic("run foo.py")ERROR: File `u'foo.py'` not found.

Edit See minrk's answer — that's a much better way to do it.


In case there might be space in argument, e.g. filename, it is better to use this:

%run "$filename"