在Windows中从子进程获取stdout
我可以用subprocess.Popen来调用FFmpeg,并实时获取我需要的数据(比如进度),但这只能在控制台中实现。我查了一下,发现当用pythonw运行时,无法获取“实时”的数据。等到进程结束再去获取数据就没什么意义了,因为我想在FFmpeg周围做一个PyQT的图形界面,这样就可以有漂亮的进度条等等。那么问题是,使用pythonw时,能否从子进程调用中获取“实时”的数据呢?
我还没有尝试用py2exe把这个应用程序编译成Windows应用,这样做会解决这个问题吗?
2 个回答
0
在你调用subprocess.Popen的时候,使用 stdout=subprocess.PIPE
。这样你就可以从这个进程的 .stdout
中读取数据了。
4
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能会在使用某个特定的功能时,发现它没有按照预期工作。这时候,我们就需要去查找相关的信息,看看有没有人遇到过类似的问题,或者有没有解决方案。
在StackOverflow上,很多开发者会分享他们的经验和解决方案。通过这些讨论,我们可以学到很多实用的知识,帮助我们更好地理解和使用这些工具。
总之,遇到问题时,不要害怕去寻求帮助,很多人都曾经经历过类似的困扰,分享他们的经验可以让我们少走很多弯路。
process = subprocess.Popen(your_cmd, shell=true, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
count=0
while True:
buff = process.stdout.readline()
if buff == '':
count += 1
if buff == '' and process.poll() != None:
break
sys.stdout.write(buff)
process.wait()