【发布时间】:2017-06-19 10:08:04
【问题描述】:
有什么简单的方法可以只更新 spring 配置文件中的一些值吗? 我正在使用 .yml 配置文件,用户可以在其中设置纯文本密码或加密密码。我想在我的 CLI 应用程序中使用命令,它会加密所有密码,但不会覆盖整个文件(不会从配置文件中删除用户 cmets)。
【问题讨论】:
有什么简单的方法可以只更新 spring 配置文件中的一些值吗? 我正在使用 .yml 配置文件,用户可以在其中设置纯文本密码或加密密码。我想在我的 CLI 应用程序中使用命令,它会加密所有密码,但不会覆盖整个文件(不会从配置文件中删除用户 cmets)。
【问题讨论】:
由于您在编程网站上提问,我假设程序被认为是一个简单的解决方案。唯一需要保持不变的是要更新的实际值的索引。
首先安装ruamel.yaml(免责声明:我是该软件包的作者),它将在往返过程中保留您的 cmets 等
import sys
from ruamel.yaml import YAML
from ruamel.yaml.util import load_yaml_guess_indent
yaml = YAML()
with open(sys.argv[1]) as fp:
data, indent, bsi = load_yaml_guess_indent(fp)
# adjust this
data['path']['to']['password'] = sys.argv[2]
with open(sys.argv[1], 'w') as fp:
yaml.dump(data, fp)
【讨论】: