2012-05-16 63 views
15

是否有一種簡單的方法可以訪問IPython交互式命名空間中的變量。在實現具有緩慢加載命令的項目時,我想運行腳本將數據加載到交互式工作空間中,然後調用第二個使用數據的腳本,就像使用MATLAB一樣。從腳本中的IPython交互式命名空間訪問變量

在這個簡單的例子,我想要做的就是

In [20]: a=5 

In [21]: run tst 

其中tst.py只是

print a 

的想法是,我想就這一次運行該腳本加載,然後在tst.py上工作。

謝謝!

回答

2

有沒有簡單或聰明的方法來做到這一點。一種方法是在測試功能中使用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的魔法運行命令-i選項;它使腳本使用當前的交互式命名空間運行,例如,與

load.py:

a = 5 

tst.py:

print a 

從IPython中我得到的;

In [1]: from load import * 

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

完美。謝謝! – user1398968