我有一个简单的python命令行应用程序,我正在扩展。它目前支持几个命令行参数:
try:
opts, args = getopt.getopt(sys.argv[1:], 'b:h',
['battle=', 'help'])
except getopt.GetoptError:
usage()
raise
# Parse opts/args.
for opt, arg in opts:
if opt in ('-h', '--help'):
usage()
elif opt in ('-b', '--battle'):
battle = True
我将不得不添加许多额外的命令行参数。我将实现它的方式,我将不得不跟踪用户可以设置的每个标志的“设置”标志。
在某些情况下,我希望“解密”我的解析器,例如,如果用户使用-x
,-y
和-z
标记运行它,告诉解析器跳过所有剩余的解析操作,然后运行一个特定的函数。但是,这将is x,y,z set
检查每个选项。
答案 0 :(得分:1)
使用getopt
是一项艰难的要求吗?可以说,更“pythonic”的方法是使用argparse
,一个更简单,更高级别的模块。在这种情况下,您可以将argparser定义为:
parser = argparse.ArgumentParser()
parser.add_argument("-x", ...)
parser.add_argument("-y", ...)
parser.add_argument("-z", ...)
args = parser.parse_args()
if args.x and args.y and args.z:
short_circuit()
对于您的第二个问题,我认为使用argparse
将无需担心解析顺序,因为您从args
对象中按名称调用每个arg。