写方法通用

时间:2016-12-16 11:54:36

标签: python

我有一个YML文件

 e_yml:
 a: https://www.google.com:8201/jde/

我在大多数测试用例中使用写入和读取YML文件方法

但是由于上面的方法只限于3个键和更多的硬编码,为了更通用我正在尝试这个逻辑 这里输出它只是将'value'写入YML文件

不是更新key[a],而是仅将值覆盖为YML。

有人可以帮我更新密钥吗?

1 个答案:

答案 0 :(得分:1)

问题

将值写入散列的深层嵌套键。

解决方案

def deep_write(hash, value, *keys)
  hash.tap do |h|
    keys[0...-1].inject(h) { |h, k| h[k] ||= {} }[keys.last] = value
  end
end

检查

hash = {}
deep_write(hash, '5678234', 'jde_env', 'py')
#⇒ { "jde_env" => { "py" => "5678234" } }

用法

def write(filename, value, *args)
  data = DataMagic.load(filename)
  File.write(
    File.join(YML_DIR_PATH, filename),
    deep_write(data, value, *args).to_yaml
  )
end