我有这个代码,我通常很高兴:
import argparse
servers = [ "ApaServer", "BananServer", "GulServer", "SolServer", "RymdServer",
"SkeppServer", "HavsServer", "PiratServer", "SvartServer", "NattServer", "SovServer" ]
parser = argparse.ArgumentParser(description="A program to update components on servers.")
group = parser.add_mutually_exclusive_group()
group.add_argument('-l', '--list', dest="update", action='store_false', default=False, help='list server components')
group.add_argument('-u', '--updatepom', dest="update", action='store_true', help='update server components')
parser.add_argument('-o', '--only', nargs='*', choices=servers, help='Space separated list of case sensitive server names to process')
parser.add_argument('-s', '--skip', nargs='*', choices=servers, help='Space separated list of case sensitive server names to exclude from processing')
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
我喜欢选择=服务器为我验证输入中的服务器名称,所以我不必这样做.但是,有这么多有效的选择会使帮助输出看起来很糟糕:
usage: …Run Code Online (Sandbox Code Playgroud) 目前我希望Python的argparse模块只打印出'1 - 65535'而不是{1,2,3,... 65535},但文档似乎没有为此提供任何方法.有什么建议?