我想通过命令过滤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
行时,现在,调试器显然已断开并且我可以使用命令,但是我没有看到它们的输出(直到整个程序存在),因此交互式调试被打破。 / p>
如何更改filter
以便交互式调试有效?
答案 0 :(得分:4)
您可以尝试制作自己的Pdb
实例。例如
mypdb = pdb.Pdb(stdout=sys.__stdout__)