Использование p4python с командой grep

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

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

Я искал в документацию P4 grep и API P4Python для сценариев, но я не смог найти, как сделай это.

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

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

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

Итак, я пытаюсь сделать скрипт P4Python. В Perfoce я сделал пользовательский сбор следующим образом:

Аргументы: C:\Users\hmunguba\Projects\P4\scripts\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()

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


person hadmung    schedule 20.06.2016    source источник


Ответы (1)


Не ожидайте, что p4.run() напечатает STDOUT. Это вызов API — фиксируйте возвращаемое значение (структурированные данные) и обрабатывайте его.

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

person sferencik    schedule 21.06.2016