[Python的3/argparse]Python 3 argparse:只有在未提供可選參數時才需要條件參數?
假設我的應用程序需要一個位置參數:
myApp.py [desired_function]
然而,如果用戶提供了一定可選的,然後desired_function
不應要求。
myApp.py --list-functions
在這種情況下,如果--list-functions
傳遞,我希望繼續申請,離開我設置desired_function
到保持空的,因爲我的代碼會看到用戶通過--list-functions
並採取相應行動的變量。
然而,如果用戶確實不提供的--list-functions
選項,那麼參數語法分析程序應該產生一個錯誤,因爲用戶沒有提供必需的位置參數。
如何使用argparse使desired_function
需要位置只有如果用戶沒有提供可選的?
代碼我到目前爲止有:
parser = argparse.ArgumentParser(description="test app")
parser.add_argument("desired_function", help="The function desired", action="store", default="", dest="func")
parser.add_argument("--list-functions",help="List the available functions", action="store_true", default=False, dest="list_mode")
在這種情況下,調用myApp.py --list-functions
將失敗:(?NARGS =)
usage: myApp.py [-h] [--list-functions] desired_function
myApp.py: error: the following arguments are required: desired_function
讓'--list-functions'產生'help'輸出可能是有意義的,所以'--list-functions'使用'action ='help''並且等價於'-h',那麼將函數列表併入'help'輸出中?或者,爲'desired_function'提供'choices',並讓'argparse'完成顯示它們的工作? – ShadowRanger