繁体   English   中英

可选参数内的 Argparse 位置 arguments

[英]Argparse Positional arguments inside an Optional argument

我想要以下带有 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 all 作为可选。 但是如果 -u 是由用户声明的 - 密码和 DB_name 必须是它的位置。

什么是正确的代码? (我对文档感到很困惑,非常感谢)

像这样的东西应该适合你:

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无需额外费用即可为您完成。

cu是可选的, passworddb_name是必需的,position 很重要。

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'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM