8

我有一个在标准输入上输入的 python 脚本。我想进入 IPython.embed(),像这样:

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

然后我像这样调用脚本:

find . -type f | thescript.py

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

有没有办法调试使用标准输入和 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 回答