サブプロセスを使用してコマンド ライン ツールを実行しています。このツールは、取得する必要があるオフセット値を計算してコンソールに出力します。しかし、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