2012-05-16 5 views
15

IPythonインタラクティブな名前空間の変数に簡単にアクセスできますか?ロード・コマンドが遅いプロジェクトを実装する際には、対話式ワークスペースにデータをロードするスクリプトを実行してから、MATLABで可能なように、データを使用する2番目のスクリプトを呼び出します。この単純なケースでスクリプトのIPythonインタラクティブな名前空間からの変数へのアクセス

は、私は何をしたいだけ

print a 

アイデアは、私はちょうどその、一度ロード・スクリプトを実行したいということですtst.pyがある

In [20]: a=5 

In [21]: run tst 

ですtst.pyで作業してください。

ありがとうございます!

答えて

2

これを行う方法は簡単ではありません。 1つの方法は、テスト関数にmain関数を置き、呼び出し元のglobalsを更新するために環境からglobalsを渡すことです。たとえば、次のように

tst.py

def main(borrowed_globals): 
    globals().update(borrowed_globals) 
    print a 

そしてiPython中:

In [1]: a = 5 

In [2]: import tst 

In [3]: tst.main(globals()) 
5 
20

はIPythonの魔法runコマンドに-iオプションを使用してみてください。現在のインタラクティブな名前空間を使用してスクリプトを実行させます。

a = 5 

がtst.py:

load.pyとIPythonから

print a 

私が取得します。

In [1]: from load import * 

In [2]: run -i tst 
5 
+0

パーフェクト。ありがとう! – user1398968

関連する問題