有谁知道如何在P4Python中使用grep()
命令?
我正在开发一个使用Perforce运行的脚本,这使我很容易在多个文件中搜索特定文本。
我已经尝试在Perforce中创建一个工具>工具>使用p4 grep -n -B 1 -e text_searched %D
之类的P4命令管理自定义工具,但由于我想在多个文件中进行相同的搜索,因此无法使用。
我在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,我做了一个像这样的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()
但我从中得到的答案总是一片空白。任何人都可以帮我吗?
答案 0 :(得分:0)
不要期望p4.run()
打印到STDOUT
。它是一个API调用 - 捕获其返回值(结构化数据)并对其进行处理。
我相信按照惯例,您应能够使用p4.run("grep", ARGS)
以及p4.run_grep(ARGS)
。如果它不起作用,它可能是一个错误。在您设法让脚本正常工作之后,请重新检查是否真的如此。