使用p4python和grep命令

时间:2016-06-20 20:07:03

标签: python perforce p4python

有谁知道如何在P4Python中使用grep()命令?
我正在开发一个使用Perforce运行的脚本,这使我很容易在多个文件中搜索特定文本

我已经尝试在Perforce中创建一个工具>工具>使用p4 grep -n -B 1 -e text_searched %D之类的P4命令管理自定义工具,但由于我想在多个文件中进行相同的搜索,因此无法使用。

我在P4 grep documentationP4Python APIs for Scripting进行了搜索,但我找不到如何执行此操作。

我注意到你可以使用run_commandName的一些命令,例如:

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

它的效果非常好!但是我不能使用P4().run_grep() = /

所以,我要做的是制作一个P4Python脚本。 在Perfoce,我做了一个像这样的Custom Toll:

参数: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()

但我从中得到的答案总是一片空白。任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

不要期望p4.run()打印到STDOUT。它是一个API调用 - 捕获其返回值(结构化数据)并对其进行处理。

我相信按照惯例,您能够使用p4.run("grep", ARGS)以及p4.run_grep(ARGS)。如果它不起作用,它可能是一个错误。在您设法让脚本正常工作之后,请重新检查是否真的如此。