python - 无论大小写如何,如何在 Python argparse 中接受 `choices`?

标签 python argparse

这个问题在这里已经有了答案:





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/

相关文章:

python - scipy.io.loadmat 不起作用

python - 随机拆分列表,在新列表中保持原始顺序

javascript - 使用 scrapy python 从 javascript 获取数据到 python

python - 将 argparse 转义字符作为选项处理

Python 错误 : the following arguments are required

python - ZeroMQ 可靠性?

python - 在azure webjobs中运行多个文件中的一个文件

python - 或在 Python 的命令行上使用带有两个变量的 argparse 函数

python - 使用 optparse 接受参数的大多数 pythonic 方式

python - 使用 Argparse 从相对路径获取完整路径