2

私は Python 2.7 で ruffus パイプラインを持っていますが、それを-nor--just_printで呼び出すと、想定どおりにパイプラインを出力するだけでなく、実際のすべてのタスクを実行します。I:
*-nビルトインに取って代わる引数はありません (ただし、他のコマンドライン引数はあります) *またはデコレータを使用
した関数がたくさんあります*呼び出し でパイプラインを終了します@transform()@merge()
run_pipeline()

他の誰かがこの問題を経験しましたか? どうもありがとう!

4

1 に答える 1

1

ruffus バージョン 2.4 以降では、を使用するモジュールをruffus.cmdline介して適切なフラグを格納するビルトインを使用できます。次に例を示します。cmdline.pyargparse

from ruffus import *
parser = cmdline.get_argparse(description='Example pipeline')
options = parser.parse_args()

@originate("test_out.txt")
def run_testFunction(output):
        with open(output,"w") as f:
            f.write("it's working!\n")

cmdline.run(options)

次に、次のようなコマンドを使用してターミナルからパイプラインを実行します。

python script.py --verbose 6 --target_tasks run_testFunction --just_print

代わりにこれを手動で行いたい場合 (古いバージョンの ruffus では必要です)、 ではなく を呼び出してpipeline_printout()、フラグが適切な呼び出しにつながるようにすることができます。次に例を示します。pipeline_run()argparse--just_print

from ruffus import *
import argparse
import sys

parser = argparse.ArgumentParser(description='Example pipeline')
parser.add_argument('--just_print', dest='feature', action='store_true')
parser.set_defaults(feature=False)
args = parser.parse_args()

@originate("test_out.txt")
def run_testFunction(output):
        with open(output,"w") as f:
            f.write("it's working!\n")

if args.feature:
    pipeline_printout(sys.stdout, run_testFunction, verbose = 6)
else:
    pipeline_run(run_testFunction, verbose = 6)

次に、次のようなコマンドを実行します。

python script.py --just_print
于 2017-01-24T17:12:47.017 に答える