可选参数中的 Argparse 位置参数
Posted
技术标签:
【中文标题】可选参数中的 Argparse 位置参数【英文标题】:Argparse Positional arguments inside an Optional argument 【发布时间】:2020-11-08 01:28:28 【问题描述】:我想要以下带有 argparse 的结构:
usage: ms1.py [-h] [-c] [-u] [password] [DB_name]
optional arguments:
-h, --help show this help message and exit
-c, --c show available items
-u password DB_name, Update database
我希望将 -h -c -u 全部设为可选。 但是如果 -u 是由用户声明的 - 密码和 DB_name 必须是它的位置。
什么是正确的代码? (我对文档感到很困惑,非常感谢)
【问题讨论】:
你能展示你的代码吗? 【参考方案1】:这样的东西应该适合你:
from argparse import ArgumentParser
p = ArgumentParser()
p.add_argument('--c', required=False)
p.add_argument('--u', required=False)
p.add_argument('password')
p.add_argument('db_name')
args = p.parse_args()
print(args)
您不需要拥有-h
。 argparse
为您服务,无需额外费用。
c
和 u
是可选的,password
、db_name
是必需的,并且位置很重要。
【讨论】:
【参考方案2】:import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-c', action='store_true', help='show available items')
parser.add_argument('-u', nargs=2, metavar=('password', 'DB_name'), help='Update database')
args = parser.parse_args()
print(args)
样本:
1442:~/mypy$ python3 stack62967549.py -h
usage: stack62967549.py [-h] [-c] [-u password DB_name]
optional arguments:
-h, --help show this help message and exit
-c show available items
-u password DB_name Update database
1442:~/mypy$ python3 stack62967549.py -c
Namespace(c=True, u=None)
1443:~/mypy$ python3 stack62967549.py -u foobar FOO
Namespace(c=False, u=['foobar', 'FOO'])
【讨论】:
以上是关于可选参数中的 Argparse 位置参数的主要内容,如果未能解决你的问题,请参考以下文章