Python argparse 可选 arg 需要其他参数
Posted
技术标签:
【中文标题】Python argparse 可选 arg 需要其他参数【英文标题】:Python argparser optional arg that requires other arguments 【发布时间】:2020-08-24 17:02:59 【问题描述】:我已经搜索了互联网,但我找不到是否可以使用可选的 python argparser 包进行参数,但是当它被选择时,它需要参数。
为了更好的理解,我会用代码解释,让大家更容易理解。
我的目标是建立一个数据库,其中包含我注册的所有网站和应用程序,并在其中存储网站或平台、邮件、用户和密码。我想创建一些可选参数,例如:
Python manageaccounts.py --add steam mail user pass
这只是一个例子,但我认为它更容易理解。 基本上,我想要的不是“--add”,而是“--delete”和“--change”参数。有了这个我想说我不知道如何使一个参数成为可选的,当它被选择时它需要另一个参数,在这种情况下我选择“--add”并在我的数据库中添加一个新行我需要一个“ site" 一个 "mail" "user" 和 "pass",我想让 "--add" 可选,当它被选为站点邮件用户和 pass 时需要
如果有人不明白我想知道的是如何让一个论点需要另一个论点。
【问题讨论】:
你试过'nargs='吗?之前讨论过***.com/a/4480202/7548672 我今天开始学习这个包,所以我不太了解,因为我不知道那是什么,但如果你能解释一下,我将不胜感激! 'nargs' 指定应该使用的命令行参数的数量。可以指定直接值 nargs= 3,可变数量的参数 nargs=*,可以是可选的单个值 args='?'或 args='+' 类似 * 但需要一个参数。在这里阅读更多信息:docs.python.org/3/library/argparse.html#nargs 哦,我明白了,非常感谢! 【参考方案1】:听起来你想要的是subparser
这是一个例子:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='subparser')
add = subparsers.add_parser("add")
add.add_argument('steam')
add.add_argument('mail')
add.add_argument('user')
add.add_argument('password')
delete = subparsers.add_parser("delete")
delete.add_argument('user')
args = parser.parse_args()
if args.subparser == 'add':
print("Called add with arguments", args.user, args.mail, args.steam, args.password)
elif args.subparser == 'delete':
print("Called delete with arguments", args.user)
else:
print("Unknown option")
【讨论】:
是的!我不知道它存在,但非常感谢!顺便说一句,什么是“dest”参数? Nvr mind 我搜索了它,我现在知道它是什么。非常感谢。以上是关于Python argparse 可选 arg 需要其他参数的主要内容,如果未能解决你的问题,请参考以下文章
Python 2.7 argparse:如何正确嵌套可选的互斥参数?