我有一个根据某些参数运行的 python 程序。比方说,其中一个参数C
的默认值为3
. 所以当我在没有任何参数的情况下运行它时,它确实
$ python parsing.py
C=3
当我为我的初始数据加载一个文件时,它可以从该文件中获取一些参数值。例如,如果我的文件MakeC5
说程序应该运行C=5
,我会得到
$ python parsing.py --file=MakeC5
C=5
另一方面,如果我为 C 指定一个不同的值作为可选参数,则采用该值,并优先于文件中的值。
$ python parsing.py --C=4
C=4
$ python parsing.py --file=MakeC5 --C=4
C=4
到这里为止,我可以只检查命令行上指定的值是否与默认值不同,否则从文件中获取一个,如
if parameters.C == parser.get_default('C'):
parameters.C = load_file(parameters.file)["C"]
但是,如果我在命令行上为 C 提供默认值,则这种方法不起作用,如
$ python parsing.py --file=MakeC5 --C=3
C=3
我怎样才能把那个案子弄好?有没有一种方法不需要像在
parameters = parser.parse_args()
parameters_from_file = load_file(parameters.file)
parser.set_defaults(**parameters_from_file)
parameters = parser.parse_args()
对我来说,这看起来不像“明显的 pythonic 方式”?这是准读取一个可以指定为参数的配置文件,所以我希望有一个好方法。