我如何在argparse
中引用另一个选项?
例如,我有一个修改现有文件的程序。我想有一个可选的参数指定输出文件的名称,它默认与输入相同(即程序默认会覆盖输入文件)。这是我到目前为止所想到的:
parser.add_argument('input', )
parser.add_argument('output',
default = sys.argv()[1],
nargs = '?',
)
但这相当于kludgey并且似乎不是最佳解决方案。
答案 0 :(得分:2)
我只需在output
之后设置parse_args()
的值,例如:
args = parser.parse_args()
if args.output is None:
args.output = args.input
在argparse中设置默认值的唯一优势(我能想到)是它可以在帮助显示中使用。但是如果用户要求-h
,他可能没有给出input
参数。效果的帮助线:'输出默认值与输入相同'会更好
您可以为action
制作自定义input
,同时设置args.input
和args.output
。但这可能很棘手。而且我认为没有任何优势超过帖子parse_args
逻辑。