关于 argparse 库 [python] [重复]

Posted

技术标签:

【中文标题】关于 argparse 库 [python] [重复]【英文标题】:Dude about argparse library [python] [duplicate] 【发布时间】:2017-07-23 07:55:25 【问题描述】:

我知道从 argsparse 中获取值,例如:

parser.add_argument('--volume', help='Ejecuta una aplicacion cualquiera')

我也知道这个参数是真还是假:

parser.add_argument('--getVolume', action='store_true', help='Ejecuta una aplicacion cualquiera')

但我不知道有时会同时使用这两种方法,因为我想使用 getter-setter 之类的参数。例如,如果我不写数字,程序会返回当前音量,如果我写数字,应用程序会将此音量设置给机器人。

python app.py --volume      # Return the current volume
python app.py --volume 80   # Set the volume to the 80%

非常感谢,

卡洛斯。

【问题讨论】:

除了链接之外,还可以使用这样的默认值,然后您可以决定是显示还是更新卷。 docs.python.org/3/library/argparse.html 看例子16.4.3.2 【参考方案1】:

您可以使用默认值进行设置/获取检查。一些伪代码:

parser.add_argument("-v", "--vol", dest="vol",  
    help="the volume [default: %(default)s]",
    default=None
)
args = parser.parse_args()

if None == args.vol:
    print(str(getVolume()))
else:
    setVolume(float(args.vol))

【讨论】:

虽然这行得通,但它总是会获取或设置。如果需要,将 nargs='?'const=... 一起使用将使其成为真正的可选。 当用户输入--vol但未指定值时,您没有考虑到它。 这是一个伪代码。随意改变它。当程序处于获取模式的命令行上没有参数时,我会以这种方式解决这个问题。如果有音量参数则处于设置模式 谢谢!问题是,如果参数量存在,我需要这种方式。我解决了我的问题:parser.add_argument('--volume', help='Ejecuta una aplicacion cualquiera', nargs='?', const='get')。这种形式如果参数卷不存在,则值为 None,如果参数卷存在但它没有值,则值为“get”。非常感谢。

以上是关于关于 argparse 库 [python] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

python标准库之argparse

Python argparse库简单入门

关于argparse库的个人学习

Python命令行解析库argparse(转)

如何使用 Python 中的 argparse 和 csv 库编写文件?

python库 argparse的add_argument基础用法