我正在为一个程序编写一个参数解析器。当前解析器的行为类似于:
Simulate Roboy in MuJoCo.
positional arguments:
P Proportional Gain
I Derivational Gain
D Integral Gain
simRate Simulation Rate
optional arguments:
-h, --help show this help message and exit
--renderRate Hz Render frequency. Default: Off.
--loggingRate Hz Logging frequency. Default: Off.
--plot Plotting after Finish. Default: Off.
--controlOnlyJoint Fix all But the specified Joint. Default: Off.
我想要一个额外的参数--playBag
。如果指定,用户还必须输入另外3个变量,一个为path类型,两个为integer类型,如--playBag shoulder.bag 10 15
。
我试过用一个亚分析器进行试验,它有点工作,但不是真的。
完整代码:
import argparse
from importlib.resources import path
parser = argparse.ArgumentParser(description='Simulate Roboy in MuJoCo.')
#playBagParser.add_argument('file', type=str, help='bagfile path')
parser.add_argument('P', type=int, help='Proportional Gain')
parser.add_argument('I', type=int, help='Derivational Gain')
parser.add_argument('D', type=int, help='Integral Gain')
parser.add_argument('simRate', type=int, help='Simulation Rate')
parser.add_argument('--renderRate', metavar='Hz', type=int, help='Render frequency. Default: Off.')
parser.add_argument('--loggingRate', metavar='Hz', type=int, help='Logging frequency. Default: Off.')
parser.add_argument('--plot', action='store_true', help='Plotting after Finish. Default: Off.')
parser.add_argument('--controlOnlyJoint', action='store_true', help='Fix all But the specified Joint. Default: Off.')
#subparser = parser.add_subparsers(dest='command')
#playBagParser = subparser.add_parser('B', help='Play Bagfile')
#playBagParser.add_argument('file', type=str, default=None, help='bagfile path')
#playBagParser.add_argument('start', type=int, help='bagfile path')
#playBagParser.add_argument('duration', type=int, help='bagfile path')
args = parser.parse_args()
.add_argument()
可以接受一个nargs
参数,该参数指定要接受多少个子参数。
因此,您可以执行以下操作:
parser.add_argument('--playBag', nargs=3)
不过您需要手动将后两个参数转换为整数。