我正在尝试使用python 3内置的argparse模块来解析带有参数的命令。我已经部分阅读了argparse文档,但是,我找不到任何符合我要求的内容。我将这些参数解析为输入(我有自己的理由(。我有多个命令,每个命令都有基本参数和可选参数。
例如:
restart --name
(名称被替换(
restart
是命令,name
是基本参数。
目前,我的代码将计数"--"在输入中,并调用具有相应布尔值的函数(如果给定--all
,则is_all
布尔参数将为true(
我还可以添加一个可选参数--all
(全部不替换(。
听起来你正在寻找类似的东西
def get_arguments():
parser = argparse.ArgumentParser()
parser.add_argument("--arg1", required=False, default=None)
parser.add_argument("--arg2", required=False, default=None)
return parser.parse_args()
args = get_arguments()
if args.arg1:
# do something
如果没有看到您想要的代码或示例,很难回答这个问题。
我假设您正在做某种类似shell的事情。我还假设输入的每一行都有一个命令,每个命令都有自己的参数。
from argparse import ArgumentParser
def get_parser(cmd):
'''Returns a parser object for a given command'''
# Instantiate the parser object, add the appropriate arguments for the command
return parser # This is an example -- you need to instantiate it
def main():
while True:
try:
in_line = input('> ')
if not in_line.strip(): # Quit if empty
break
args = in_line.split()
parser = get_parser(args[0])
opts = parser.parser_args(args)
# Do stuff with opts depending on command
except EOFError:
break
except SystemExit:
pass # Prevent failures from killing the program by trapping sys.exit()