我正在尝试使用带有子解析器的 argparse 在 3 个功能之间切换,而一个位置参数应该对所有子解析器都是通用的。此外,这是关键点,我想将位置参数作为提供的最后一个参数,因为这个参数是输出文件路径。把它放在开头对我来说毫无意义(作为第一个论点)
import sys,argparse,os
files = argparse.ArgumentParser(add_help=False)
files.add_argument('outfile', help='output mesh file name')
parser = argparse.ArgumentParser(description="A data interpolation program.",prog='data_interpolate.py', parents=[files])
subparsers = parser.add_subparsers(help='Mode command.')
command_parser = subparsers.add_parser('cmd',help='Pass all argument in command line.',parents=[files])
command_parser.add_argument('-min', dest='MINFILE',help='Input file with min values', required=True)
command_parser.add_argument('-max', dest='MAXFILE',help='Input file with min values', required=True)
command_parser.add_argument('u', help='Interpolation parameter. Float between 0 and 1. Out of bound values are limited to 0 or 1.')
subparsers.add_parser('py',help='Pass all argument in python file.',parents=[files])
subparsers.add_parser('json',help='Pass all argument in json file.',parents=[files])
这使:
data_interpolation.py -h
usage: data_interpolation.py [-h] outfile {cmd,py,json}
但是,在我看来,outfile 应该在最后给出:
data_interpolation.py [-h] {cmd,py,json} outfile
这在使用 cmd 命令时更有意义,因为我需要传递其他参数值。例如:
data_interpolation.py cmd -min minfile.txt -max maxfile.txt 0.6 outfile.txt
如何设置 argparse 以具有这种行为?