Popen shell命令和|管道符号

时间:2016-10-18 10:16:48

标签: android python shell pipe android-logcat

我已经检查了许多其他线程有相同的问题,但无法得到一个适合我的。 我正在尝试使用|来运行命令Windows机器上的字符,使用python和wx.python。命令我尝试运行的是:adb.exe logcat | findstr myApp(存储在pkgName中)

我尝试了以下但没有成功,没有任何内容写入'进度框':注意:它们并非都在同一时间尝试过;)

        logcat = subprocess.Popen(toolsDir + "\\adb.exe logcat", stdout=subprocess.PIPE)
        findstr = subprocess.Popen("findstr '"+ pkgName+"'", stdin=logcat.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        stdout, stderr = findstr.communicate()


        cmd = toolsDir+"\\adb.exe logcat | findstr " + pkgName
        ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
        stdout = ps.communicate()[0]


        c_arg = 'logcat | findstr ' + pkgName
        params = toolsDir + "\\adb.exe " + c_arg
        p = Popen(params, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        stdout, stderr = p.communicate()

它们都略有不同,但没有任何附加到我的progressBox打印输出。

        self.progressBox.AppendText(stdout)
        self.progressBox.AppendText(stderr)

1 个答案:

答案 0 :(得分:0)

我自己多次使用子进程库来运行系统命令。我可能会建议使用核心操作系统库,但我不确定这是否可以在Windows上运行,但你可以尝试一下。

import os
cmd = "ls -la > output.txt"
os.system(cmd)

reader = open("output.txt")
print(reader.read())

PS:建议使用子进程模块运行系统命令,只有当你找不到解决方案并且只想急需运行代码时才应该使用上面的代码。