首页 > 解决方案 > 执行从 python gflags 到 yaml 并返回的转换的惯用方式是什么?

问题描述

我正在为我的项目使用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) 重新调用?

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

标签: pythonyamlabseil

解决方案


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

这对你有用吗?


推荐阅读