2

Windowsコマンドラインを使用してコマンドをデバイスに送信し、出力を読み取り、その内容を繰り返すpythonスクリプトを作成しています。

proc = subprocess.Popen("adb logcat | findstr Test", stdout=subprocess.PIPE)
for line in proc.stdout:
    if "stopped" in line:
        print line
        print "Test Service finished \n"
        break
    else:
        print line

残念ながら、私は次のようになります:

>>> 
/system/bin/sh: findstr: not found
output error: Broken pipe

「| findstr Gps」がなくても機能しますが、パイプに送信される出力の量が多すぎて、最終的にメモリインシデントにつながります。

私が間違っていることは何ですか?

前もって感謝します!

4

1 に答える 1

0

私はこれがうまくいくと思います(stderr=subprocess.PIPE害はないはずですが、本当に必要かどうかはわかりません):

proc = subprocess.Popen("adb logcat | findstr Test", stdout=subprocess.PIPE,
                                                     stderr=subprocess.PIPE))
stdoutdata, stderrdata = proc.communicate()
for line in stdoutdata:
    if "stopped" in line:
        print line
        print "Test Service finished \n"
        break
    else:
        print line
于 2013-02-26T15:53:36.523 に答える