当前位置:  开发笔记 > 编程语言 > 正文

Python中的自定义命令行解析

如何解决《Python中的自定义命令行解析》经验,为你挑选了2个好方法。

我正在为我的一个项目编写一个shell,它通过设计解析看起来像这样的命令:

COMMAND_NAME ARG1 ="长值"ARG2 = 123 ARG3=me@me.com

我的问题是Python的命令行解析库(getopt和optparse)迫使我在参数前面使用' - '或' - '.此行为与我的要求不符.

任何想法如何解决?任何现有的库?



1> ironfroggy..:

您可以使用shlex.split()将它们拆分,它可以处理您拥有的引用值,并且可以使用非常简单的正则表达式轻松解析它.或者,您可以使用正则表达式进行拆分和解析.或者只使用split().

args = {}
for arg in shlex.split(cmdln_args):
    key, value = arg.split('=', 1)
    args[key] = value


对于shlex.split(cmdln_args)中的arg,args = dict(arg.split('=',1))

2> jfs..:

    尝试遵循" 命令行界面标准 "

    将您的参数(如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)])

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有