サブパーサーでargparseを使用して3つの関数を切り替えようとしていますが、1つの位置引数はすべてのサブパーサーに共通する必要があります。さらに、それが重要なポイントですが、これは出力ファイルパスであるため、提供される最後の引数として位置引数を配置したいと思います。それを最初に置くのは意味がありません(最初の引数として)
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}
しかし、私の意見では、アウトファイルは最後に次のように指定する必要があります。
data_interpolation.py [-h] {cmd,py,json} outfile
cmd コマンドを使用すると、他のパラメーター値を渡す必要があるため、これはさらに意味があります。たとえば:
data_interpolation.py cmd -min minfile.txt -max maxfile.txt 0.6 outfile.txt
このような動作をするように argparse を設定するにはどうすればよいですか?