我正在使用Argparse解析shell輸入到我的Python函數。按位解析argparse輸入
棘手的部分是,該腳本首先讀入一個文件,該文件部分確定Argparse可用的參數類型(它是包含用於指定要輸出的數據的條件的JSON文件)。
但是在將這些參數添加到我的解析器之前,我想閱讀一些與讀取文件相關的參數。 (例如是否修復輸入文件的格式)。有點兒像這樣:
test.py (fix_formatting=True, **more arguments added later)
當我嘗試運行args = parser.parse_args()
兩倍,初始輸入後,加入更多的鍵後,事情土崩瓦解:Argparse相當可預見的抱怨,一些用戶輸入的是unrecognized arguments:
。我想我可能會用subparsers來達到目的。
於是,我的變化(以下在docs是最好的,我可以的例子):
def main():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='sub-command help')
settingsparser = subparsers.add_parser('settings') #i want a subparser called 'settings'
settingsparser.add_argument('--fix_formatting', action='store_true') #this subparser shall have a --fix_formatting
然後,我只嘗試解析「設置」部分,像這樣:
settings=parser.parse_args(['settings'])
這似乎工作。但後來我加我的其他按鍵,事情打破:
keys=['alpha','beta','gamma','delta']
for key in keys:
parser.add_argument("--"+key, type=str, help="X")
args = parser.parse_args()
如果我解析任何從鍵參數中的任何輸入,Argparse抱怨我做的invalid choice: [...] (choose from 'settings')
。現在我不明白爲什麼我必須從「設置」中進行選擇;該文件說,該分析
將只包含這是通過在命令行中選擇(而不是任何其他subparsers)主分析器和子分析器屬性
什麼是我的錯誤在這裏瞭解?
如果這是錯誤的方法,如何解決一位輸入之前的另一位呢?
任何幫助非常感謝!
非常感謝!我想我完全誤解了subparsers的概念以及部分解析。感謝澄清... – patrick