我有一個命令行腳本,我試圖運行,如果該值不存在,則將缺省值插入到名稱空間中,或者如果它存在,則採用提供的參數。如何子類argparse.Action添加自定義操作?
所以我想這樣做:
myscript.py --merge
會導致參數解析器命名空間看起來像這樣:
命名空間(合併= ' - 合併')
否則,如果我叫
myscript.py
命名空間應該是這樣的:
命名空間(合併=「DONTMERGE」)
我想我需要繼承argparse.Action類的呼叫方法來執行自定義操作如下規定:https://pymotw.com/2/argparse/但我我無法弄清楚如何做到這一點。
我覺得這樣的事情會做的伎倆:
class CustomAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if isinstance(self.values, None):
self.values = 'NOMERGE'
else:
self.values = '--nomerge'
setattr(namespace, self.dest, values)
不幸的是,我沒有得到預期的結果。
爲什麼不只是使用'store_const'參數? – khelwood
我試過store_const,問題是我將不得不提供一個額外的參數給--merge,就像myscript --merge someotherarg通過命令行提供的參數通過管道傳輸到另一個腳本,我無法改變其行爲。 –
看看鏈接的文章,'setattr'調用應該縮進更深一層。 – FamousJameous