argparse の使用に問題があります。プログラムの動作に影響を与える一連の名前をコマンド ラインで定義できるようにしたいと考えています。次のスニペットを試しました:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("allon", action='store_true', default = False,
help="Toggles all output pins to ON.")
parser.add_argument("alloff",action='store_true',
help="Toggles all output pins to OFF.")
parser.add_argument("cont", action='store_true',
help="Toggles all output pins continously on and off.")
args = parser.parse_args()
if args.allon:
do_allon()
elif args.alloff:
do_alloff()
....
しかし、コードの動作は予想外のものです。git status
コードを(先頭の「--」なしで)呼び出したいので、これらのオプションに「--」を使用したくありません。
まず、引数なしでコードを呼び出すと、すべての引数が True に設定されますが、引数が指定されていない場合は False に設定されます。予想される動作は次のとおりです。
python code.py
として呼び出すときに、allon, alloff
にcont
設定したいFalse
python code.py alloff
私はallon
とcont
なるように設定されているFalse
間、 と なりたいです。alloff
True
第二に、私が呼び出すと、例えば、python code.py allon
私は得る
code.py: error: unrecognized arguments: allon
私はまったく理解していません。私は optparse の使用方法を知っていますが、上記のスニペットを機能させるために argparse の助けをいただければ幸いです。
ありがとうアレックス
PS if-loop は単に教育的なものであり、実際にはそのように実装されているわけではありません。