私はPythonのargparseの仕組みを理解するのに少し苦労しています。argparse - コードは呼び出されずに実行されるのはなぜですか?
私のスクリプトには、パラメータを取らない3つの位置指定引数、make、コンパイル、クリーンがあります。私はドキュメントのようにサブパーザルでやったことがありますが、私のコードは引き数なしで実行され続けます。また、適切な関数(それはすべてのケースでLanguage()。make()を実行します)
マイargparseコード:
lang = Language()
parser = argparse.ArgumentParser(description='e-cidadania language catalog generator.')
subparser = parser.add_subparsers()
parser_make = subparser.add_parser('make', help='Create all the language' \
' catalogs for translation,'\
' including JavaScript.')
parser_make.set_defaults(func=lang.make())
parser_compile = subparser.add_parser('compile', help='Compile all the language' \
' catalogs for use.')
parser_compile.set_defaults(func=lang.compile())
parser_clean = subparser.add_parser('clean', help='Delete all the language catalogs.' \
' After this you will'\
' have to rebuild the catalogs' \
' and translate them.')
parser_clean.set_defaults(func=lang.clean())
args = parser.parse_args()
最初の行は、ファイル内の唯一のクラスを呼び出すには、三つの主要な方法、make
、clean
とcompile
や他の民間方法、_iterator
と__init__
でLanguage
と呼ばれます。
更新完全なスクリプトはここにある:http://dpaste.com/hold/681317/
私はこれを実行するために、文書から欠落していますか? particullarで
parser_make.set_defaults(func=lang.make())
、この部分:
lang.make()
をその結果、func
argはmake
の戻り値に設定されますが、ここで、自分make
を呼んでいるので、だ
あなたの目標が単純な位置引数を扱う場合は、次のargparseラッパーを参照することをおすすめします。http://plac.googlecode.com/hg/doc/plac.html http://packages.python org/argh/reference.html –
+1、それらについて知りませんでした:) –
私たちはお互いに助けています:) –