1. ホーム
  2. python

[解決済み] IPythonのマジック(run)関数に変数を渡す方法

2023-04-30 19:38:54

質問

以下のようなことをしたいのですが、どうすればよいでしょうか?

In[1]: name = 'long_name_to_type_every_now_and_then.py'

In[2]: %run name

を実行しようとしますが、これは実際には 'name.py' を実行しようとするもので、これは私がやりたいことではありません。

変数を文字列にする一般的な方法はありますか?

以下のようなものです。

In[3]: %run %name%

どのように解決するのですか?

IPythonは変数を $name で、bash-style で展開します。 これは すべての魔法 だけでなく %run .

というようにするのですね。

In [1]: filename = "myscript.py"

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

myscript.pyが含まれています。

import sys
print(sys.argv)

Pythonのおしゃれな文字列フォーマットで {} :

In [3]: args = ["arg1", "arg2"]

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