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 sys
print(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']

Leave a Comment