我正在为我的一个项目编写一个shell,它通过设计解析看起来像这样的命令:
COMMAND_NAME ARG1 ="长值"ARG2 = 123 ARG3=me@me.com
我的问题是Python的命令行解析库(getopt和optparse)迫使我在参数前面使用' - '或' - '.此行为与我的要求不符.
任何想法如何解决?任何现有的库?
您可以使用shlex.split()将它们拆分,它可以处理您拥有的引用值,并且可以使用非常简单的正则表达式轻松解析它.或者,您可以使用正则表达式进行拆分和解析.或者只使用split().
args = {} for arg in shlex.split(cmdln_args): key, value = arg.split('=', 1) args[key] = value
尝试遵循" 命令行界面标准 "
将您的参数(如Thomas建议的)转换为OptionParser格式.
parser.parse_args(["--"+p if "=" in p else p for p in sys.argv[1:]])
如果命令行参数不在sys.argv或类似的列表中,而是在字符串中,那么(如ironfroggy建议的那样)使用shlex.split()
.
parser.parse_args(["--"+p if "=" in p else p for p in shlex.split(argsline)])