使用Python添加复杂的默认值';args解析

使用Python添加复杂的默认值';args解析,python,Python,我正在使用argparse解析控制台输入。对于我的一个输入选项,我想添加一个依赖于其他选项的默认选项: parser.add_argument('--job_name') parser.add_argument('--user_name', default='guest') 我希望用户能够定义一个job\u name,但如果用户没有定义,我希望job\u name为user\u name+datetime.date.today(),(例如'guest20

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

parser.add_argument('--job_name')
parser.add_argument('--user_name',
                    default='guest')
我希望用户能够定义一个
job\u name
,但如果用户没有定义,我希望
job\u name
user\u name+datetime.date.today()
,(例如
'guest2016-10-23'


是否可以在
argparse
中执行此操作?也许通过给出一个
lambda
…?

我认为这是不可能的,因为在初始化之前不能使用“args.user\u 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())

我认为这是不可能的,因为在初始化之前不能使用“args.user\u 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())

您可以让argparser实例提供的帮助说明这一点,然后在实际执行工作的函数中,如果没有提供默认值,则生成所需的默认值。保持实现与argparser的解耦,以便这两个东西可以彼此独立地重用。我想我可以用这个。我只是想知道
argparse
是否提供了一种方法。谢谢!:)您可以让argparser实例提供的帮助说明这一点,然后在实际执行工作的函数中,如果没有提供默认值,则生成所需的默认值。保持实现与argparser的解耦,以便这两个东西可以彼此独立地重用。我想我可以用这个。我只是想知道
argparse
是否提供了一种方法。谢谢!:)