【问题标题】:Argparse Positional arguments inside an Optional argument可选参数中的 Argparse 位置参数
【发布时间】:2023-04-02 18:28:01
【问题描述】:

我想要以下带有 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 必须是它的位置。

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

【问题讨论】:

  • 你能展示你的代码吗?

标签: python mysql command-line-interface command-line-arguments argparse


【解决方案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)

您不需要拥有-hargparse 为您服务,无需额外费用。

cu 是可选的,passworddb_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'])
    

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2018-02-20
      • 2015-06-16
      相关资源
      最近更新 更多