1

grep()P4Pythonでコマンドを使用する方法を知っている人はいますか?
Perforce で実行されるスクリプトを開発しており、複数のファイル内の特定のテキストを簡単に検索できます

Perforce > Tools > Manage Custom Tools で P4 コマンドなどを使用してツールを作成しようとしましたp4 grep -n -B 1 -e text_searched %Dが、複数のファイルで同じ検索を行いたいため、機能しません。

P4 grep ドキュメントP4Python API 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\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()

しかし、これから得られる答えは常に空白の画面です。誰でも私を助けることができますか?

4

2 に答える 2

0

p4.run()に印刷することを期待しないでくださいSTDOUT。これは API 呼び出しです。戻り値 (構造化データ) を取得して処理します。

API の慣例により、と同様に使用できるはずです。動かない場合は多分バグです。スクリプトを正常に動作させた後、これが本当にそうであるかどうかを再確認してください。p4.run("grep", ARGS)p4.run_grep(ARGS)

于 2016-06-21T08:29:16.690 に答える