在Python和Windows 7中使用“findstr”循环执行stdout命令行内容

时间:2013-02-26 14:53:26

标签: python subprocess windows-7-x64

我正在编写一个python脚本,它使用Windows命令行向设备发送命令,然后读取输出迭代其内容:

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”的情况下工作,但是发送到管道的输出量太大而且最终会导致内存事件。

任何想法我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分: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