2017-01-25 6 views
0

Ich versuche ein Skript zu machen, um das Testen zu beschleunigen.Python [2.7] - Subprozess

Ich habe mein Programm "foo", das eine Reihe von Befehlen und "bar" zurückgibt, die diese Befehle steuern.

foo werden wie folgt ausgeführt:

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

bar mit demselben argumets ausgeführt wird:

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

und warten dann für eine Reihe von Befehlen von Hand oder durch foo Ausgang gegeben.

So verwende ich meine Programme, die Art und Weise:

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

ich das Rohr Verhalten in Python zu replizieren versuchen:
lst ein listet meine ARG ist()

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

Offensichtlich Es ist nicht die richtige Methode, aber ich habe mehrere Wege versucht und es funktioniert nicht.

+1

See [ 'subprocess' Dokumentation - Shell-Pipelines Ersetzen] (https://docs.python.org/3/library/subprocess.html#replacing-shell-pipeline) – falsetru

+0

Bitte werfen Sie einen Blick in diese nützliche Bibliothek: https://pypi.python.org/pypi/sh – Mortezaipo

Antwort

0

Ich behandelt alle Bash-Befehle in einem Projekt von sh Bibliothek.

Sie können ganz einfach alle Ihre Befehle verarbeiten wie so:

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

haben Sie einen Blick in FAQ von sh Bibliothek: http://amoffat.github.io/sh/sections/faq.html