这个问题在这里已经有了答案:
Case insensitive argparse choices
(3 个回答)
3年前关闭。
我在 Python 程序中有一个标志,它只能是某些字符串,rock
, paper
, 或 scissors
. Python argparse 有一个很好的方法来实现这一点,使用 choices
, 参数允许值的容器。
这是文档中的一个示例:
import argparse
...
parser = argparse.ArgumentParser(prog='game.py')
parser.add_argument('move', choices=['rock', 'paper', 'scissors'])
parser.parse_args(['rock'])
### Namespace(move='rock')
parser.parse_args(['fire'])
### usage: game.py [-h] {rock,paper,scissors}
### game.py: error: argument move: invalid choice: 'fire' (choose from 'rock','paper', 'scissors')
我想实现
choices
使得选项不区分大小写,即用户可以输入 RoCK
它仍然有效。执行此操作的标准方法是什么?
最佳答案
您可以设置 type=str.lower
.
见 Case insensitive argparse choices
import argparse
parser = argparse.ArgumentParser(prog='game.py')
parser.add_argument('move', choices=['rock', 'paper', 'scissors'], type=str.lower)
parser.parse_args(['rOCk'])
# Namespace(move='rock')
关于python - 无论大小写如何,如何在 Python argparse 中接受 `choices`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47902750/