2016-06-20 3 views
1

Кто-нибудь знает, как использовать команду grep() в P4Python?
Я разрабатываю скрипт, который работает с Perforce, и облегчает для меня поиск определенных текстов внутри нескольких файлов.Использование команды p4python с командой grep

Я уже пытался создать инструмент в Perforce> Инструменты> Управление пользовательскими инструментами с помощью команд P4, таких как p4 grep -n -B 1 -e text_searched %D, но так как я хочу сделать один и тот же поиск в нескольких файлах, это не сработает.

Я искал в P4 grep documentation и P4Python APIs for Scripting, но я не мог найти, как это сделать.

Я заметил, что некоторые команды, которые вы можете использовать run_commandName, как:

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

И это работает очень хорошо! Но я не могу использовать P4().run_grep() =/

Итак, я пытаюсь сделать скрипт P4Python. На Perfoce я сделал Выборочная Toll вроде этого:

Аргументы: C: \ Users \ hmunguba \ Projects \ P4 \ Сценарии \ searchp4pythonscript.py $ U $ P $ C% D

И мой код что-то например:

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() 

Но ответ, который я получаю от этого, всегда является пустым экраном. Может ли кто-нибудь помочь мне с этим?

ответ

0

Не ждите p4.run() для печати до STDOUT. Это вызов API - захват возвращаемого значения (структурированные данные) и его обработка.

Я считаю, что в соответствии с соглашением о API, вы должны быть в состоянии использовать p4.run("grep", ARGS), а также p4.run_grep(ARGS). Вероятно, это ошибка, если она не работает. Пожалуйста, повторите проверку, если это действительно так, после того, как вам удалось запустить ваш скрипт.

Смежные вопросы