Python3.5 subprocess.stdout.readline()阻塞直到程序死掉

时间:2016-04-29 08:53:09

标签: python subprocess stdout live

我想创建一个监视DumpIt RAM转储的python程序。无论如何,弄清楚它只是一个命令行程序,在完成工作并退出之前询问一个Y / N问题。

我尝试使用Python子进程模块执行此操作但是stdout的读取是阻塞的。我认为因为缓冲标准输出。

当我启动一个打印出来的程序然后退出时,它会起作用,但我希望在进程运行时获得实时输出。

我已经尝试了以下内容:

live output from subprocess command

http://www.saltycrane.com/blog/2009/10/how-capture-stdout-in-real-time-python/

以下是Windows 10 x64,Python 3.5

上的代码
print("start dump")
proc = subprocess.Popen([os.getcwd() + "\Ressources\Dumper\DumpIt.exe"], bufsize=0, stdout=subprocess.PIPE)

print("dump launched")

#v1
for line in iter(proc.stdout.readline, ''):
    sys.stdout.write(str(line))

#v2
# while True:
#     line = proc.stdout.readline()
#     sys.stdout.write(str(line))
#     if line == "" and proc.poll() is not None:
#         break

print("wait")
proc.wait()
print("done")

输出:

start dump
dump launched

抱歉英语不好

0 个答案:

没有答案