argparse參數的順序,我試圖用argparse與子分析器3個fonctionnalities之間進行切換,而一個位置參數應該是通用於所有子分析器。此外,它是關鍵點,我想把位置參數作爲提供的最後一個參數,因爲這是一個輸出文件路徑。這是沒有意義的,我把它一開始(如第一個參數)定義在python
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命令。 For intance:
data_interpolation.py cmd -min minfile.txt -max maxfile.txt 0.6 outfile.txt
我該如何設置argparse纔能有這樣的行爲?