当我们需要在 Python 程序中从命令行中获取参数时,可以使用标准库中的 argparse
模块。在 argparse
模块中,ArgumentParser
类是核心类,用于定义程序需要的参数,并在程序中解析这些参数。ArgumentParser
实例有一个 parse_args()
方法,用于解析命令行参数并返回一个包含解析结果的命名空间对象。但是,如果在解析命令行参数时出现错误,该方法会抛出异常,导致程序无法继续执行。为了避免这种情况,可以使用 parse_known_args()
方法,该方法与 parse_args()
方法类似,但是不会抛出异常,而是忽略未知的参数。
在代码中,我们可以先定义一个函数 get_parser()
,用于创建一个 ArgumentParser
对象并定义需要的参数。get_parser()
函数返回的是一个 ArgumentParser
对象,可以通过该对象的 add_argument()
方法来添加需要的参数。在添加参数时,可以指定参数的名称、类型、默认值、帮助信息等。例如:
def get_parser():
parser = argparse.ArgumentParser(description='My Program')
parser.add_argument('--input', type=str, help='input file path', required=True)
parser.add_argument('--output', type=str, help='output file path', default='output.txt')
parser.add_argument('--verbose', action='store_true', help='print verbose output')
return parser
在这个例子中,我们创建了一个名为 parser
的 ArgumentParser
对象,然后使用 add_argument()
方法添加了三个参数:--input
、--output
和 --verbose
。--input
参数是必需的,需要传入一个字符串类型的值;--output
参数是可选的,默认值为 'output.txt'
,需要传入一个字符串类型的值;--verbose
参数是可选的,不需要传入值,只需要在命令行中使用 --verbose
标记即可。
在程序中使用 get_parser()
函数获取 ArgumentParser
对象后,我们可以调用该对象的 parse_known_args()
方法来解析命令行参数,并获取解析结果。例如:
args, unknown_args = get_parser().parse_known_args()
parse_known_args()
方法返回两个值:args
和 unknown_args
。args
是一个命名空间对象,包含解析出来的参数值;unknown_args
是一个列表,包含未解析的参数。在程序中可以使用 args
对象来获取命令行参数的值,例如 args.input
、args.output
和 args.verbose
。在程序中也可以使用 unknown_args
列表来处理未知的参数。