ArgParse Python模块:更改inherted参数的默认参数值

use*_*841 7 python inheritance default parent argparse

我有一堆Python脚本,它们使用通用代码来读取输入和编写不同类型的输出文件.

这些是化学结构文件.一些示例文件类型是.smi或.sdf.

默认情况下,我希望其中一些脚本以"smi"文件格式输出数据,而其他脚本则以"sdf"格式输出数据.

是否可以覆盖从父解析器继承的参数的默认值?

例如...

# Inherited code
filesParser = argparse.ArgumentParser(add_help=False)
filesParser.add_argument('-o', dest='outformat', default="smi")

# Script code
parser = argparse.ArgumentParser(description='inherts from filesParser', parents=[filesParser])
parser.add_argument('--foo')

# Something like...
# parser.outformat.default = "sdf"

args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

第一篇文章,希望我的礼仪还可以.

非常感谢,戴夫

wim*_*wim 7

是的(docs):

>>> parser.parse_args([])
Namespace(foo=None, outformat='smi')
>>> parser.set_defaults(outformat='sdf')
>>> parser.parse_args([])
Namespace(foo=None, outformat='sdf')
Run Code Online (Sandbox Code Playgroud)