2012-12-20 15 views
7

Mam skrypt Pythona, który pobiera dane wejściowe na stdin. Chciałbym wpaść IPython.embed() w następujący sposób:Jak mogę debugować skrypt, który używa stdin z ipython?

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

I wtedy wywołać skrypt tak:

find . -type f | thescript.py 

Problemem jest to, że ipython używa stdin na interaktywnej konsoli więc pierwszą rzeczą, którą widzi są pozostałe dane rur. Następnie rura zamyka się i terminal wychodzi.

Czy istnieje sposób debugowania skryptu używającego stdin z ipythonem?

Odpowiedz

5

Mogłeś przeczytać wejścia stdin na liście, następnie zresetować stdin: (! I to działa)

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

To słodkie. – Reece

Powiązane problemy