python子进程为空输出和错误

时间:2018-08-29 19:31:25

标签: python subprocess praat

我正在使用子进程来运行命令行工具。该工具正在控制台中计算和打印我需要获取的偏移值。但是stdout和stderr都是空的。 这是我的python代码:

import subprocess

PRAAT_EXE = r'S:\Resources\SOFTWARE_AND_UTILITIES\Praat\Praat.exe'
WAV_FILE_1 = r'F:\dev\praat\one.wav'
WAV_FILE_2 = r'F:\dev\praat\two.wav'
CMD = '{0} crosscorelate.praat {1} {2}'.format(PRAAT_EXE, WAV_FILE_1, WAV_FILE_2).split()

p = subprocess.Popen(CMD, shell=True)
output, err = p.communicate()
print("OUTPUT", output)
print("ERRORS", err)

这是控制台的输出:

F:\dev\praat>python test_praat.py
-0.09053774572864626
OUTPUT None
ERRORS None

因此,您会看到在继续执行python脚本之前,该值已打印在控制台中。我不知道该值在哪个管道中,但我无法获取。

编辑:以下内容在文件中不打印任何内容:

Praat.exe crosscorelate.praat one.wav two.wav > result.txt

但是在python脚本完成几秒钟后,该值会在我的命令提示符中打印出来,如下所示:

F:\dev\praat>-0.09053774572864626

0 个答案:

没有答案