我想通过命令过滤 Python 脚本的输出,同时能够正常使用pdb.set_trace()
。
我运行这个脚本:
#!/usr/bin/python
import sys, os, pdb
print "first line"
sys.stdout = os.popen('./filter', 'w')
#pdb.set_trace()
print "second line"
print "third line"
filter
脚本是这样的:
#!/usr/bin/python
import subprocess, sys
subprocess.call( 'cat', stdout=sys.stdout, stderr=sys.stderr, shell=True )
一切正常,我在终端上看到了输出。 但是,当我取消注释set_trace
行时,现在,调试器显然中断了,我可以使用命令,但我看不到它们的输出(直到整个程序存在),因此交互式调试被破坏了。
如何更改filter
以使交互式调试正常工作?
您可以尝试创建自己的Pdb
实例。 例如。
mypdb = pdb.Pdb(stdout=sys.__stdout__)