2016-06-20 13 views
1

Kann jemand grep() Befehl in P4Python verwenden?
Ich entwickle ein Skript, das mit Perforce läuft und es mir leicht macht, nach nach bestimmten Texten in mehreren Dateien zu suchen.Verwenden von p4python mit grep Befehl

Ich habe bereits versucht, ein Werkzeug in Perforce> Tools> Benutzerdefinierte Tools mit P4-Befehlen wie p4 grep -n -B 1 -e text_searched %D zu erstellen, aber da ich die gleiche Suche in mehreren Dateien machen möchte, wird es nicht funktionieren. Ich habe in P4 grep documentation und P4Python APIs for Scripting gesucht, aber ich konnte nicht finden, wie das geht.

Ich habe bemerkt, dass einige Befehle, die Sie run_commandName, wie verwenden:

from P4 import sys, P4, P4Exception 
    p4 = P4() 
    p4.run_integrated(fileName) 

Und es funktioniert wirklich gut! Aber ich kann nicht verwenden P4().run_grep() =/

Also, was ich versuche, ist ein P4Python-Skript zu machen. Auf Perfoce ich eine benutzerdefinierte Toll wie folgt gemacht: ist \ Benutzer \ hmunguba \ Projects \ P4 \ scripts \ searchp4pythonscript.py $ u $ p $ c% D

Und mein Code etwas:

Argumente: C wie:

from P4 import sys, P4, P4Exception 

p4 = P4() 
p4.user = sys.argv[1] 
p4.port = sys.argv[2] 
p4.client = sys.argv[3] 

p4.connect() 

FILE = str(sys.argv[4]) 
SEARCH_TEXT = sys.argv[5] 

try: 
    p4.run("grep", "-e ", SEARCH_TEXT, FILE) 
except P4Exception: 
    for e in p4.errors: 
     print e 
finally: 
    p4.disconnect() 

Aber die Antwort, die ich daraus bekomme, ist immer ein leerer Bildschirm. Kann mir jemand dabei helfen?

Antwort

0

Erwarten Sie nicht p4.run(), um STDOUT zu drucken. Es ist ein API-Aufruf - erfassen Sie seinen Rückgabewert (strukturierte Daten) und verarbeiten Sie ihn.

Ich glaube, dass durch Konvention der API Sie sollte Lage sein p4.run("grep", ARGS) sowie p4.run_grep(ARGS) zu verwenden. Es ist wahrscheinlich ein Fehler, wenn es nicht funktioniert. Bitte überprüfen Sie, ob dies wirklich so ist, nachdem Sie Ihr Skript zum Laufen gebracht haben.