在argparse中引用其他选项

时间:2013-08-26 20:28:08

标签: python argparse

我如何在argparse中引用另一个选项?

例如,我有一个修改现有文件的程序。我想有一个可选的参数指定输出文件的名称,它默认与输入相同(即程序默认会覆盖输入文件)。这是我到目前为止所想到的:

parser.add_argument('input', )
parser.add_argument('output',
        default = sys.argv()[1],
        nargs = '?',
        )

但这相当于kludgey并且似乎不是最佳解决方案。

1 个答案:

答案 0 :(得分:2)

我只需在output之后设置parse_args()的值,例如:

args = parser.parse_args()
if args.output is None:
    args.output = args.input

在argparse中设置默认值的唯一优势(我能想到)是它可以在帮助显示中使用。但是如果用户要求-h,他可能没有给出input参数。效果的帮助线:'输出默认值与输入相同'会更好

您可以为action制作自定义input,同时设置args.inputargs.output。但这可能很棘手。而且我认为没有任何优势超过帖子parse_args逻辑。