我有一个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的脚本?
答案 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()