如何使用ipython调试使用stdin的脚本?

时间:2012-12-20 19:48:36

标签: python ipython

我有一个python脚本,它接受stdin的输入。我想放入IPython.embed(),就像这样:

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

然后我调用这样的脚本:

find . -type f | thescript.py

问题是IPython使用stdin作为交互式控制台,因此它首先看到的是剩余的管道数据。然后,管道关闭,终端退出。

有没有办法调试使用stdin和ipython的脚本?

1 个答案:

答案 0 :(得分:5)

您可以先将stdin输入读入列表,然后重置stdin:

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