限制命令行选项的值

use*_*146 31 python command-line-arguments argparse

如何限制argparse选项的值?

在下面的代码sau选项应该只接受了一些01bg应只允许一个整数.我该如何实现呢?

import os
import sys, getopt
import argparse

def main ():
    parser = argparse.ArgumentParser(description='Test script')
    parser.add_argument('-sau','--set',action='store',dest='set',help='<Required> Set flag',required=True)
    parser.add_argument('-bg','--base_g',action='store',dest='base_g',help='<Required> Base g',required=True)
    results = parser.parse_args() # collect cmd line args
    set = results.set
    base_g = results.base_g

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

Jon*_*fer 38

您可以使用的类型选择参数add_argument.要仅接受'0'和'1',您需要:

parser.add_argument(…, choices={"0", "1"})
Run Code Online (Sandbox Code Playgroud)

并且只接受整数,你会这样做:

parser.add_argument(…, type=int)
Run Code Online (Sandbox Code Playgroud)

请注意,在选择中,您必须以您指定的类型为type-argument提供选项.因此,要检查整数仅允许0和1,您需要:

parser.add_argument(…, type=int, choices={0, 1})
Run Code Online (Sandbox Code Playgroud)

例:

>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> _ = parser.add_argument("-p", type=int, choices={0, 1})
>>> parser.parse_args(["-p", "0"])
Namespace(p=0)
Run Code Online (Sandbox Code Playgroud)