1

出力しています

parec -d "name"

このコマンドを知る必要はありません。Enter キーを押すとすぐに、オーディオを表すバイナリ データが出力されることを知っておいてください。

私の目標は、これをPythonでリアルタイムで読み取ることです。つまり、それを開始して、次のようなもので読み取ることができる変数「データ」に入れます

data = p.stdout.read()

私が試したこと

p = subprocess.Popen(['parec','-d','"name"'],stdout=subprocess.PIPE,shell=True)

while True:
   data = p.stdout.read()

しかし、これではデータが受信されません。

parec -d "name" > result.raw

オーディオプログラムで読み取り可能で、必要なデータが正確に含まれています。では、pythonのコマンドは何ですか?

4

2 に答える 2

0

subprocess.PIPE で read() を呼び出すと、parec終了するまでブロックされると思います

このソリューションがブロックされるべきではないと確信しています:)

解決策を見つけた

from subprocess import Popen, PIPE, STDOUT

p = Popen('c:/python26/python printingTest.py', stdout = PIPE, 
        stderr = PIPE)
for line in iter(p.stdout.readline, ''):
    print line
p.stdout.close()

かなりの検索が必要でしたが、この解決策は @ Getting realtime output using subprocessで見つけることができます

于 2013-05-19T23:51:41.843 に答える