我有一个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()