使用 Python 的 argparse 添加复杂的默认值

Pab*_*blo 1 python

我用来argparse解析控制台输入。对于我的输入选项之一,我想添加一个依赖于其他选项的默认选项:

parser.add_argument('--job_name')
parser.add_argument('--user_name',
                    default='guest')
Run Code Online (Sandbox Code Playgroud)

我希望用户能够定义 a job_name,但如果用户没有定义,我希望是job_nameuser_name + datetime.date.today()(例如'guest2016-10-23')。

可以在 之内做到这一点吗argparse?也许通过给予lambda...?

小智 5

我认为这是不可能的,因为在初始化之前你不能使用“args.user_name”。但你可以这样做:

import argparse
import datetime

parser = argparse.ArgumentParser()
parser.add_argument('--job_name', default=None)
parser.add_argument('--user_name', default='guest')
args = parser.parse_args()

if args.job_name is None:
    args.job_name = args.user_name + str(datetime.date.today())
Run Code Online (Sandbox Code Playgroud)