0

我正在使用 subprocess 来运行命令行工具。该工具正在控制台中计算和打印我需要获取的偏移值。但是 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
4

0 回答 0