如何添加可选且不得多次指定的参数?
有效的:
$ ./my.py
$ ./my.py --arg MyArgValue
Run Code Online (Sandbox Code Playgroud)
无效的:
$ ./my.py --arg MyArgValue --arg ThisIsNotValid
Run Code Online (Sandbox Code Playgroud)
如果我添加一个参数,如:
parser.add_argument('--arg', type=str)
Run Code Online (Sandbox Code Playgroud)
无效示例产生一个字符串ThisIsNotValid。我预计会出现解析器错误。
创建一个自定义操作,如果相同的参数出现两次,该操作将引发异常。当解析器捕获异常时,它会打印用法和格式良好的错误消息。
import argparse
class Highlander(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if getattr(namespace, self.dest, None) is not None:
raise argparse.ArgumentError(self, 'There can be only one.')
setattr(namespace, self.dest, values)
parser = argparse.ArgumentParser()
parser.add_argument('-f', action=Highlander)
print (parser.parse_args('-f 1 -f 2'.split()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |