I want to do something like the following:
In[1]: name = 'long_name_to_type_every_now_and_then.py'
In[2]: %run name
but this actually tries to run 'name.py'
, which is not what I want to do.
Is there a general way to turn variables into strings?
Something like the following:
In[3]: %run %name%
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']