手动将命令传递给argparse? | Python 2.7

时间:2017-02-20 17:59:08

标签: python-2.7 cmd argparse

我正在使用Python的精彩Cmd库制作终端游戏。但我很好奇,如果我能以某种方式将argparse代码放入其中。就像使用argparse来处理我的cmd.Cmd()类中的'args'一样。 为此,我真的希望argparse有办法手动将args传入它。我浏览了文档,但没有发现类似的事情。

1 个答案:

答案 0 :(得分:3)

parse_args()接受一个可选参数args,其中包含要解析的列表(或元组)。 parse_args()(不带参数)等同于parse_args(sys.argv[1:])

  

在脚本中,parse_args()通常不带参数调用,ArgumentParser将自动确定来自sys.argv的命令行参数。

如果你没有元组,只有一个字符串,可以使用shlex.split()完成类似shell的参数拆分

>>> shlex.split('"A" B C\\ D')
['A', 'B', 'C D']   

请注意,argparse会在致命错误上打印使用情况和帮助消息以及exit()。您可以覆盖.error()以自行处理错误:

class ArgumentParserNoExit(argparse.ArgumentParser):
    def error(self, message):
        raise ValueError(message) # or whatever you like