【发布时间】:2017-07-06 23:33:03
【问题描述】:
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 值将按预期转换。
我有什么比将argparse.FileType()('-') 明确传递为default 更好的选择吗?
【问题讨论】: