从 python gflags 到 yaml 并返回的惯用方式是什么?

What's the idiomatic way of performing conversions from python gflags to yaml and back?

我正在为我的项目使用 absl-py 的 python gflags。

它们是指定配置的便捷方式,但我经常喜欢 运行 相同的配置,保存命令行调用并不可取,因为它们难以阅读和维护。

我希望能够维护指定标志值的 YAML 文本文件。例如,一个程序可能被调用为

python myapp.py --some_int_arg 3 --noboolean_value

也可以调用为

python myapp.py --from_config config.yaml

其中config.yaml的内容是

some_int_arg: 3
boolean_value: false

类似地,能够在第一次调用时构建上面的文件会很好。

最地道的方式是什么

  1. 接受命令行上的配置文件路径并覆盖所有 absl.flags.FLAGS 值?
  2. absl.flags.FLAGS 实例转换为文本表示形式(最好是 YAML),然后可以使用 (1)?
  3. 重新调用

编辑。似乎有一种接受配置文件的简单方法,使用 --flagfile,它应该只在新行中包含每个标志的值。但是,我的问题 (2) 仍然存在,我怎样才能恢复这样的文件?目前唯一的解决方案似乎是抓取 flags.FLAGS 并手动将每个标志值字符串化。

FLAGS.flags_into_string() 应该 return 一个可以放在标志文件中的字符串。或者 FLAGS.append_flags_into_file('path/to/flagfile.txt') 将标志附加到该文件。

这对你有用吗?