我正在写一个简单的包装器在python调试器(pdb)上,我需要解析pdb输出。但是从流程管道读取文本时遇到问题。我的代码阅读过程输出
实例:在OS壳
import subprocess, threading, time
def readProcessOutput(process):
while not process.poll():
print(process.stdout.readline())
process = subprocess.Popen('python -m pdb script.py', shell=True, universal_newlines=True,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)
read_thread = threading.Thread(target=readProcessOutput, args=(process,))
read_thread.start()
while True:
time.sleep(0.5)
当我执行给定的命令(蟒蛇-m PDB script.py)我得到的结果是这样的:
> c:\develop\script.py(1)<module>()
-> print('hello, world!')
(Pdb)
但是当我运行我的脚本我只有两行,但无法获得pdb提示。在这之后将命令写入标准输入无效。所以我的问题是: 为什么我不能读第三行?我怎样才能避免这个问题,并得到正确的输出?
平台:Windows XP中,Python的3.3
PDB采用模块化设计,可以延长。我认为你不需要这样包装它。你试图解决什么是最终的问题? – Keith
我试图创建一个简单的扩展崇高的文本来帮我调试时。它不是功能丰富的,我认为解析输出会比扩展pdb容易得多。 – Victor