2011-04-23 45 views

回答

2

如果你真的想用rlwrap這一點,寫一個過濾器!只是定義input_handler,增加了%run myfile.py到輸入和echo_handler呼應你的原始輸入,這樣你就不會看到這種情況出現(man RlwrapFilter告訴你想知道的關於寫作過濾所有,然後一些)。

但是是不是更優雅的內IPython的自身解決這個問題,使用IPython.hooks.pre_runcode_hook

import os 
import IPython 
ip = IPython.ipapi.get() 

def runMyFile(self): 
    ip.magic('%run myFile.py') 
    raise IPython.ipapi.TryNext() 

ip.set_hook('pre_runcode_hook', runMyFile) 
+0

正是我在找的,謝謝! – 2011-04-23 20:32:50

2

我無法找到任何優雅的方式。這是醜陋的方式。運行:

rlwrap awk '{print "%run myfile.py"} {print} {fflush()}' |ipython 

這是從STDIN讀取的,但在每個命令之前打印出您想要的命令。 fflush是否有禁用緩衝並立即傳遞給ipython的東西。 rlwrap是否保留readline綁定;如果你沒有它,你可以刪除它,但是這樣會不太方便(沒有箭頭鍵等)。

記住,你將有ipython提示出現前,鍵入命令。可能還有其他更令人討厭的事情中斷,我還沒有完全測試。

相關問題