0

CSV の最初のヘッダー行に含まれるすべての言語の翻訳がすべての行に含まれている場合、言語翻訳ファイル (CSV 形式) をチェックする Python スクリプトがあります。スクリプトは、翻訳が欠落しているファイル/行をリストします。問題がなければ OK を出力します。 私の質問は次のとおりです。 メイクファイル内からスクリプトを呼び出して、出力が正常かどうかを確認するにはどうすればよいですか? OK 以外の何かがスクリプトによって出力された場合は、makefile を停止します。

何か案は?

4

3 に答える 3

3

make出力されるテキストではなく、出力ステータスをチェックします。最も簡単な解決策は、sys.exit(1)チェックアウトが OK でない場合に Python スクリプトで使用することです。

例えば:

targetfile: dependsonfile
      python pythonscript.py -o targetfile dependsonfile

もちろん、実際の構文は、 のpythonscript.py呼び出し方法に大きく依存します。

Pythonscript がチェックを行うだけの場合は、次のように実行できます。

makethis: didcheck
    echo "made it" > makethis   

didcheck:  #dependencies here
    python -c 'import sys; sys.exit(1)'
    touch didcheck

次に、 make as を呼び出しますmake makethis

于 2012-08-13T13:28:01.703 に答える
1

終了コードを使用して結果を示すように Python スクリプトを変更できない場合は、次のように Make で実装できます (*nix で作業していると仮定します)。

check-i18n:
    @if [ `python your_script.py` = 'OK' ]; \
        then echo "good enough"; \
        else echo "too bad"; exit 1; \
    fi

別のオプションは、読みにくいですが、クロスプラットフォームです (したがって、Windows でも機能します)。

# String equality check.
eq = $(findstring $1,$(findstring $2,$1))

check-i18n:
    @$(if $(call eq,OK,$(shell python your_script.py)), \
        echo "good enough", \
        echo "too bad"; exit 1)
于 2012-08-13T19:34:19.467 に答える
0

この質問に対する私の答えとして

import os
import copy
import subprocess

def command(command):
    env = copy.deepcopy(os.environ)
    proc = subprocess.Popen(command,
                shell=True, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    result = proc.stdout.read()
    return result

ret = command(YOUR COMMAND HERE)

if ret == "OK":
    print "yay"
else:
    print "oh no!: %s" % ret

あなたのコードを見せてくれたら、私の答えをもっとうまく実装できます。

于 2012-08-13T13:30:44.130 に答える