【问题标题】:Dude about argparse library [python] [duplicate]关于 argparse 库 [python] [重复]
【发布时间】: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%

非常感谢,

卡洛斯。

【问题讨论】:

标签: python argparse


【解决方案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”。非常感谢。
猜你喜欢
  • 2013-10-07
  • 2015-05-20
  • 1970-01-01
  • 2019-09-23
  • 2016-01-01
  • 2017-01-17
  • 1970-01-01
  • 2018-07-19
  • 2018-06-27
相关资源
最近更新 更多