使用 argparse 解析值的最常见方法

在使用它时argparse,这是我第一次遇到“命名空间”对象。处理这些对象的最常见方法是什么?例如,如果我有这个初始化代码:


import argparse

parser = argparse.ArgumentParser(description='Dedupe library.', allow_abbrev=True)

parser.add_argument( '-a', '--all', nargs='+', type=int, help='(Optional) Enter one or more IDs.')

parser.add_argument( '-r', '--reverse', nargs='+', help='(Optional) Enter one or more IDs.')

似乎该库在每个--long选项上添加了一个属性(如果存在,否则为短-s选项),因此类似以下内容的作品:


# test.py

p = parser.parse_args()

print (p.all, p.reverse)

# -------------------------------------

$ python test.py -a 2 3 -r asdf

# [2, 3] ['asdf']

这是处理输出的最常见方法吗argparse?或者通常是如何完成的?


繁华开满天机
浏览 76回答 1
1回答

慕少森

每个参数都执行某种由 的action参数指定的操作add_argument。默认是一个store动作。每个store操作都会将一个(或多个)值保存到结果命名空间中的属性中。dest您可以使用参数 to指定哪个属性add_argument,但更常见的是,该名称是从第一个长选项名称(或第一个短名称,如果没有长名称)推断出来的。请注意,您可以有多个影响同一属性的选项。常见用途是使用多个store_const操作将不同的硬编码值保存到单个属性。p.add_argument("--high", action='store_const', dest='level', const='high')p.add_argument("--med", action='store_const', dest='level', const='medium')p.add_argument("--low", action='store_const', dest='level', const='low')您可以将其视为为采用显式参数来指定级别的选项提供一系列别名:p.add_argument("--level", choices=['high', 'medium', low'])其中--high与 具有相同的效果--level high。>>> p.parse_args(["--level", "high"]).level'high'>>> p.parse_args(["--high"]).level'high'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python