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