8

stdin で入力を受け取る Python スクリプトがあります。次のように、IPython.embed() にドロップしたいと思います。

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

次に、次のようにスクリプトを呼び出します。

find . -type f | thescript.py

問題は、IPython がインタラクティブ コンソールに stdin を使用するため、最初に表示されるのは残りのパイプ データです。次に、パイプが閉じてターミナルが終了します。

stdin を ipython で使用するスクリプトをデバッグする方法はありますか?

4

1 に答える 1

6

最初に stdin 入力をリストに読み込み、次に stdin をリセットできます。

stdin_list = list(sys.stdin)
sys.stdin = open('/dev/tty')
for filepath in stdin_list:
    dir = os.path.basename(filepath)
    ...
    IPython.embed()
于 2012-12-20T20:59:47.983 に答える