从Windows中的子进程检索stdout

时间:2010-08-19 12:46:47

标签: python windows ffmpeg pyqt subprocess

我可以使用subprocess.Popen调用FFmpeg并检索我需要的数据,因为它发生(为了获得进展),但仅限于控制台。我环顾四周,看到你无法获得“实时”数据when running with pythonw。然而,等到进程完成检索数据是没有意义的,因为我正在尝试围绕FFmpeg包装一个PyQT GUI,所以我可以有很好的进度条和诸如此类的东西。所以问题是,在使用pythonw时,你可以从子进程调用中检索“实时”数据吗?

我还没有尝试使用py2exe编译应用程序作为Windows应用程序,是否可以解决问题?

2 个答案:

答案 0 :(得分:4)

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()

答案 1 :(得分:0)

在调用subprocess.Popen时,请使用stdout=subprocess.PIPE。然后,您将能够阅读流程的.stdout