我正在 python 调试器(pdb)上编写一个简单的包装器,我需要解析 pdb 输出。但是我从进程管道中读取文本时遇到问题。
我的代码示例:
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)
当我在 OS shell 中执行给定的命令(python -m pdb script.py)时,我得到如下结果:
> c:\develop\script.py(1)<module>()
-> print('hello, world!')
(Pdb)
但是当我运行我的脚本时,我只得到两行,但不能得到 pdb 提示。在此之后向标准输入写入命令无效。所以我的问题是:为什么我不能阅读第三行?我怎样才能避免这个问题并获得正确的输出?
平台:Windows XP、Python 3.3