我如何调试将stdin与ipython一起使用的脚本



我有一个python脚本,可以在stdin上输入。我想放入ipython.embed(),这样:

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

我这样调用脚本:

find . -type f | thescript.py

问题是Ipython将STDIN用于交互式控制台,因此首先看到的是剩余的管道数据。然后,管道关闭,端子退出。

有没有办法调试与ipython一起使用stdin的脚本?

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

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

最新更新