2016-09-13 2 views
3
>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> parser.add_argument("--dog") 
_StoreAction(option_strings=['--dog'], dest='dog', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None) 
>>> args = parser.parse_args(["--do", "fido"]) 
>>> args 
Namespace(dog='fido') 

これはバグのようです。私はそれが議論を認識しないと予想していたでしょう。これをどうやって止めることができますか?argparseが短縮型の "ロングネーム"フラグを受け入れないようにするにはどうしたらいいですか? (Python 2.7)

編集:apparently this is documented behavior...

+0

[あなたのための別のオプション](http://stackoverflow.com/a/39479562/2877364)(ここでは、 '@ '表記法がどれほど広範囲に及ぶかわからないので、ここに投稿してください)。 – cxw

+0

3.5版から 'argparse.py'ファイルを盗むことができます。 3.5の中のすべては2.7で動作するはずです。例外はget_subactions()からyieldを使用する行です。あなたはそれの2.7バージョンを保持したいでしょう。 'argparse'はただ一つのファイルしか使わないので、カスタムバージョンを持つ株式バージョンは簡単です。 – hpaulj

答えて

3

thisパー

parser = argparse.ArgumentParser(allow_abbrev=False) 

を試してみてください。 Python 3.5以上が必要です。

+0

ああ、これは完璧ですが、私はPython 2.7を使用しています。このオプションは私には利用できないようです。私はこれを反映するために私の質問のタグを更新しました。 – 2rs2ts

関連する問題