2017-01-25 15 views
0

私はテストを高速化するスクリプトを作ろうとしています。Python [2.7] - サブプロセス

私は自分のプログラム "foo"を持っています。これは一連のコマンドとそれらのコマンドを制御する "bar"を返します。

FOOは、以下のように実行される:

./foo ARG(1) ARG(2) ARG(n) 

バーは同じargumetsで実行される:

./bar ARG(1) ARG(2) ARG(n) 

そして手動またはFOO出力によって与えられる一連のコマンドを待ちます。

したがって、私はそのように私のプログラムを使用します。私はPythonでパイプの挙動を再現しようとしています

./foo ARG(1) ARG(2) ARG(n) | ./bar ARG(1) ARG(2) ARG(n) 


LSTは私のARG(のLISTEです)

明らか
output = subprocess.check_output([os.path.realpath("foo")] + lst) 
res = subprocess.check_output([os.path.realpath("bar")] + lst, output) 

をそれは正しい方法ではありませんが、私は複数の方法で試してきましたが、うまくいきません。

+1

参照[ 'subprocess'ドキュメンテーション - シェルのパイプラインを置き換えます]( https://docs.python.org/3/library/subprocess.html#replacing-shell-pipeline) – falsetru

+0

Peaseはこの便利なライブラリを見ています:https://pypi.python.org/pypi/sh – Mortezaipo

答えて

0

私はプロジェクト内のすべてのbashコマンドをshライブラリで処理しました。

あなたは簡単にそうようなあなたのすべてのコマンドを処理することができます:

import sh 
sh.grep(sh.cat('/etc/passwd'), '-i', 'my_username') 

SHライブラリのよくある質問に見てください:http://amoffat.github.io/sh/sections/faq.html