能够使用choices=servers下面的方法来验证列表项是很好的。
servers = [ "ApaServer", "BananServer", "GulServer", "SolServer", "RymdServer", "SkeppServer", "HavsServer", "SovServer" ]
parser = argparse.ArgumentParser()
parser.add_argument('-o', '--only', nargs='*', choices=servers, help='Space separated list of case sensitive server names to process')
Run Code Online (Sandbox Code Playgroud)
是否可以强制列表中的项目是唯一的,从而不允许重复?
正确使用丢弃重复项的方法argparse是创建自己的argparse.Action类,该类将set按照其他答案的建议进行使用:
import argparse
class UniqueAppendAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
unique_values = set(values)
setattr(namespace, self.dest, unique_values)
servers = ["ApaServer", "BananServer", "GulServer", "SolServer",
"RymdServer", "SkeppServer", "HavsServer", "SovServer" ]
parser = argparse.ArgumentParser()
parser.add_argument('-o', '--only', nargs='*', choices=servers, action=UniqueAppendAction,
help='Space separated list of case sensitive server names to process')
print parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
输出示例:
$ python test.py -o ApaServer ApaServer
Namespace(only=set(['ApaServer']))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2390 次 |
| 最近记录: |