2012-12-20 38 views
7

我有一個python腳本,它接受stdin上的輸入。我想放到IPython.embed(),像這樣:如何調試與ipython一起使用stdin的腳本?

for filepath in sys.stdin: 
    dir = os.path.basename(filepath) 
    ... 
    IPython.embed() 

我然後調用腳本是這樣的:

find . -type f | thescript.py 

的問題是,IPython的使用標準輸入交互控制檯,所以它看到的第一件事是剩餘的管道數據。然後,管道關閉,終端退出。

有沒有一種方法可以調試使用stdin和ipython的腳本?

回答

5

你能讀懂你的標準輸入輸入到一個列表,然後再重新設置標準輸入:(!和它的作品)

stdin_list = list(sys.stdin) 
sys.stdin = open('/dev/tty') 
for filepath in stdin_list: 
    dir = os.path.basename(filepath) 
    ... 
    IPython.embed() 
+0

這就是可愛。 – Reece

相關問題