我有一個關於在Python 2.7中的argparse的問題。我試圖忽略沒有使用的參數,因爲我有一個批處理文件,它將參數傳遞給幾個Python腳本,不同的腳本需要抽出不同的參數。Python argparse忽略串聯參數?
例如:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a', action='store_true')
如果我指定自身的每一個參數,它工作正常:
args, unknown = parser.parse_known_args(['-a',' -b'])
print args
# Namespace(a=True)
print unknown
# [' -b']
但是,如果我在級聯格式指定它們:
args, unknown = parser.parse_known_args(['-ab'])
我得到這個:
: error: argument -a: ignored explicit argument 'b'
但是,如果我這行添加到上面的代碼:
parser.add_argument('-b', action='store_true')
然後這個工程:
args, unknown = parser.parse_known_args(['-ab'])
print args
# Namespace(a=True, b=True)
print unknown
# []
所以看起來我可以使用級聯格式僅與已知的參數。我想知道是否有一種方法可以使用連接格式,只需將它知道的參數拉出來即可?我能想到的唯一選擇就是在所有Python腳本中定義所有參數,但是那麼似乎會污染-h幫助顯示?
這是如何工作的。如果你看看這個方法:它叫做'parse_KNOWN_args()'。 –
但是這不是一個爭論 - 實際上只是兩個單獨論證的縮寫版本,a和b,已知和b不是?如果我使用-a -b,那麼即使-b未知,它也可以工作。我只想讓選項使用-ab,因爲許多管理員對這種入門方式更爲熟悉。 –
然後定義參數。 –