2016-10-18 8 views
1

私は同じ問題で他にも数多くのスレッドをチェックアウトしていますが、私にはうまくいかないものはありません。 |コマンドを実行しようとしています。 Windowsマシン上で、pythonとwx.pythonを使って私が実行しようとしているコマンドは次のとおりです:adb.exe logcat |注意:Popenシェルコマンドと|パイプシンボル

は、私は、何も「progressBox」で書かれていないいない成功を収めて、次の試してみました(PKGNAMEに格納されている)はfindstrて、myAppそれらはすべて同じ時間に試されていなかった。

 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) 

答えて

0

システムコマンドを実行するためにサブプロセスライブラリを使用して多数の問題が発生しました。私はおそらくコアOSのライブラリを使用することをお勧めしますが、これはウィンドウ上で動作するかどうかはまだ分かりませんが、試してみてください。

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

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

PS:システムコマンドを実行するために、サブプロセスモジュールを使用することをお勧めします、あなたが解決策を見つけることができないだけ早急にコードを実行したい場合にのみ、コードの上に使用する必要があります。