1. ホーム
  2. python

大文字小文字を区別しないargparseの選択肢

2023-08-22 13:24:50

質問

以下のようなチェックは可能でしょうか? argparseの選択肢 を大文字小文字を区別せずにチェックすることは可能でしょうか?

import argparse
choices = ["win64", "win32"]
parser = argparse.ArgumentParser()
parser.add_argument("-p", choices=choices)
print(parser.parse_args(["-p", "Win32"]))

の結果が得られます。

usage: choices.py [-h] [-p {win64,win32}]
choices.py: error: argument -p: invalid choice: 'Win32' (choose from 'win64','win32')

どのように解決するのですか?

引数を小文字に変換するには

type = str.lower

には -p スイッチになります。

この解決策は チェプナー の中で コメント . 私が以前提案した解決策は

type = lambda s : s.lower()

も有効ですが、よりシンプルに str.lower .