Python,argparse : how to have nargs=2 with type=str and type=int

标签 python argparse

我花了一些时间在 argparse 文档上,但我仍然在为我的程序中的一个选项努力使用这个模块:

parser.add_argument("-r", "--rmsd", dest="rmsd", nargs=2,
    help="extract the poses that are close from a ref according RMSD",
    metavar=("ref","rmsd"))

我希望第一个参数是一个字符串(str 类型)并且是必需的,而第二个参数应该是 int 类型,如果没有值给定一个默认值(假设 default=50)。我知道当只有一个参数时该怎么做,但我不知道当 nargs=2 时如何继续......这甚至可能吗?

最佳答案

您可以执行以下操作。 required 关键字将字段设置为必填,如果未指定,default=50 将选项的默认值设置为 50:

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("-s", "--string", type=str, required=True)
parser.add_argument("-i", "--integer", type=int, default=50)

args = parser.parse_args()    
print args.string
print args.integer

输出:

$ python arg_parser.py -s test_string
    test_string
    50
$ python arg_parser.py -s test_string -i 100
    test_string
    100
$ python arg_parser.py -i 100
    usage: arg_parser.py [-h] -s STRING [-i INTEGER]
    arg_parser.py: error: argument -s/--string is required

关于Python,argparse : how to have nargs=2 with type=str and type=int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16959101/

相关文章:

python - 在单个命令行中多次调用相同的子命令

python - 权限错误 : [Errno 13] Permission denied: 'emails2/Train'

python - 如何使用 python 发送并发 10,000 post 请求?

python - 替换pytest中的测试用例继承?

python - 设置可变长度列表内容的格式

Python 参数解析 : Mutually exclusive group with some compatible arguments

python - 为什么我的 argparse 抛出 SystemExit 2 错误?

python - 如何从命名空间中删除参数

python - 单击按钮时如何禁用文本抖动?

python - 如何处理 argparse 中缺少的参数?