446

コマンドライン引数にオプションのフラグを追加するにはどうすればよいですか?

例えば。だから私は書くことができます

python myprog.py 

また

python myprog.py -w

私は試した

parser.add_argument('-w')

しかし、私はただエラーメッセージを受け取ります

Usage [-w W]
error: argument -w: expected one argument

これは、-wオプションの引数値が必要であることを意味します。旗を受け入れる方法は何ですか?

この質問については、 http://docs.python.org/library/argparse.htmlがかなり不透明だと感じています。

4

4 に答える 4

717

あなたがそれを持っているように、引数はコマンドラインのw後に値を期待しています。-w変数Trueまたはを設定してスイッチを切り替えるだけの場合はFalseここ(具体的にはstore_trueとstore_false)を参照してください。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-w', action='store_true')

ここで、はをaction='store_true'意味しdefault=Falseます。

逆に、を持っている可能性があります。これはaction='store_false'、を意味しdefault=Trueます。

于 2011-11-24T15:01:57.423 に答える
71

クイックスニペットを追加して、実行できるようにします。

ソース:myparser.py

import argparse
parser = argparse.ArgumentParser(description="Flip a switch by setting a flag")
parser.add_argument('-w', action='store_true')

args = parser.parse_args()
print args.w

使用法:

python myparser.py -w
>> True
于 2016-04-19T06:53:00.670 に答える
9

あなたのスクリプトは正しいです。ただし、デフォルトではNoneタイプです。したがって、args.argument_name変数にNone以外の値が割り当てられている場合はtrueと見なされます。

action="store_true"を追加することをお勧めします。これにより、True/Falseタイプのフラグが作成されます。使用する場合はTrue、それ以外の場合はFalse。

import argparse
parser = argparse.ArgumentParser('parser-name')
parser.add_argument("-f","--flag",action="store_true",help="just a flag argument")

利用方法

$ python3 script.py -f

args.fでチェックすると解析した後、trueを返します。

args = parser.parse_args()
print(args.f)
>>>true
于 2020-07-25T07:38:37.870 に答える
-12

sysこれを行う簡単な方法は次のとおりです。機能は制限されていますが、..以外は何も必要ありません。

flag = "--flag" in sys.argv[1:]

[1:]完全なファイル名が--flag

于 2016-05-03T02:07:13.303 に答える