2017-01-16 9 views
2

私はPython 2.7でruffusパイプラインを手に入れましたが、-nまたは--just_printと呼ぶと、パイプラインを印刷するのではなく。 I:
*(私は他のコマンドライン引数を持っていますが)@transform()または@merge()デコレータ
と機能の束を持っている*
を内蔵して取って代わるだろう-n引数を持っていない*とのパイプラインを終了a run_pipeline()コールPython 2.7でRuffusライブラリを使用すると、just_printフラグが失敗する

誰でもこの問題が発生していますか?どうもありがとう!

答えて

1

ruffusバージョン2.4の時点で、あなたは例えば、​​を使用していますcmdline.pyモジュールを介して適切なフラグを保存する組み込みruffus.cmdlineを使用することができます。

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のあなたはとても--just_printフラグは、たとえば、適切なコールにつながること​​を使用して、pipeline_run()ではなくpipeline_printout()を呼び出すことができます確かだ

python script.py --just_print 
+0

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) 

あなたは、その後のようなコマンドを実行します機能的なハックですが、それらの組み込み引数を持つruffusの目的を破ることはありませんか?あるいは、組み込みの議論だけの提案ですか? –

+0

@ J.C.Szamosi組み込み引数はありません。独自の構造を構築する必要があります。私はruffusパッケージの作者からコードを見てきました。彼はまたこのようなことをします –

+0

これはとても役に立ちます、ありがとうございます!私はあらかじめ定義されたオプション(http://www.ruffus.org.uk/tutorials/new_tutorial/command_line.html)に関するドキュメントはちょっと誤解を招くので、私はそれらについて連絡を取っていきます。 –

関連する問題