Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
316 views
in Technique[技术] by (71.8m points)

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

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%
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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']

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...