argparse:使用必需参数的值设置可选参数

Nic*_*mer 16 python default-value argparse

使用Python的argparse,我想添加一个可选参数,如果没有给出,则获取另一个(强制)参数的值.

parser.add_argument('filename',
                    metavar = 'FILE',
                    type    = str,
                    help    = 'input file'
                    )

parser.add_argument('--extra-file', '-f',
                    metavar = 'ANOTHER_FILE',
                    type    = str,
                    default = ,
                    help    = 'complementary file (default: FILE)'
                    )
Run Code Online (Sandbox Code Playgroud)

我当然可以None在解析参数后手动检查,但是不是有更多的pythonic方法吗?

mgi*_*son 15

据我所知,除此之外没有办法做得更干净:

ns = parser.parse_args()
ns.extra_file = ns.extra_file if ns.extra_file else ns.filename
Run Code Online (Sandbox Code Playgroud)

(就像你提出的问题一样).

可能会做一些与此类似的自定义动作体操,但我真的不认为这是值得的(或"pythonic").

  • `ns.extra_file = ns.extra_file或ns.filename` (15认同)