1
將選項的參數應用於類型轉換,如果默認值是字符串,則應用這些參數的默認值。然而,現在看來,這並沒有對定位參數做到:如何將argparse應用類型轉換爲位置參數的默認值?
import argparse as ap
p = ap.ArgumentParser()
p.add_argument('file', nargs='*',
metavar='FILE',
default='-',
type=ap.FileType(),
help='Input files. - is stdin. Default: %(default)s')
print(p.parse_args([]))
# Namespace(file='-')
print(p.parse_args(['-']))
# Namespace(file=[<_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>])
(Ideone)
如果我改變file
到--file
,使這些選項參數,如預期的那樣default
值轉換。
作爲default
,我有沒有比明確通過argparse.FileType()('-')
更好的選擇?
我很理解第一部分,但我不明白這與此有什麼關係。至於第二個,如果我使用的默認文件是''/ some/file''而不是'' - ''呢? – muru
'default = ap.FileType('/ some/file')'。默認值不會受到定義類型的處理。 – chepner
(我正在檢查源代碼,但是,以確保我不會錯過任何東西,這是一個複雜的過程。) – chepner