相关疑难解决方法(0)

这个database.yml文件中的&,<<,*是什么意思?

到目前为止,我只使用了database.yml,每个参数都显式调出,在下面的文件中使用了一些我不理解的字符.每行和符号(&,*,<<)的含义是什么,我如何阅读此文件?

development: &default
  adapter: postgresql
  database: dev_development

test: &test
  <<: *default
  database: test_test


cucumber:
  <<: *test

production:
  <<: *default
  database: test_production
Run Code Online (Sandbox Code Playgroud)

alias yaml database-connection ruby-on-rails cross-reference

145
推荐指数
4
解决办法
3万
查看次数

如何合并YAML数组?

我想在YAML中合并数组,并通过ruby加载它们 -

some_stuff: &some_stuff
 - a
 - b
 - c

combined_stuff:
  <<: *some_stuff
  - d
  - e
  - f
Run Code Online (Sandbox Code Playgroud)

我想将组合数组作为 [a,b,c,d,e,f]

我收到错误:在解析块映射时没有找到预期的键

如何在YAML中合并数组?

yaml list data-structures

79
推荐指数
4
解决办法
3万
查看次数

在YAML中扩展数组?

假设我有:

base_array:
  -1
  -2
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做:

my_array: << base_array
  -3
Run Code Online (Sandbox Code Playgroud)

所以my_array是 [1,2,3]

更新:我应该指定我希望扩展发生在YAML本身内部.

yaml

28
推荐指数
1
解决办法
8247
查看次数

覆盖YAML子项

说我有以下YAML文件:

-
   key1: value
# and so on...
   key99: value
   key100:
      subkey1: value
# and so on...
      subkey100: value
-
   key1: value
# and so on...
   key99: value
   key100:
      subkey1: value
# and so on...
      subkey100: SOME DIFFERENT VALUE
Run Code Online (Sandbox Code Playgroud)

处理大量相同数据的自然方式是使用锚点,并覆盖更改的键.

问题是,这里的子项不同.有没有一种简单的方法来引用key100['subkey100']改变了?或者我必须在每个级别使用一系列锚点?

即,是否有简写:

- &anchor
   key1: value
# and so on...
   key99: value
   key100: &subanchor
      subkey1: value
# and so on...
      subkey100: value
-
   <<: *anchor
   key100:
      <<: *subanchor
      subkey100: SOME DIFFERENT VALUE
Run Code Online (Sandbox Code Playgroud)

yaml

14
推荐指数
1
解决办法
5932
查看次数

利用 Python f 字符串和 Yaml 文件?

如果我有一个 yaml 文件,其中包含一个带有括号符号 {} 的字符串,与 python f 字符串配合使用,那么如何在此处利用 f 字符串插值?以这个简单的 yaml 文件为例:

# tmp.yaml
k1: val1
k2: val2 as well as {x}
Run Code Online (Sandbox Code Playgroud)

如果x = 'val3',我希望 k2 的值能够反映val2 as well as val3

# app.py
x = 'val3'
with open('tmp.yaml', 'rt') as f:
    conf = yaml.safe_load(f)

print(conf)
{'k1': 'val1', 'k2': 'val2 as well as {x}'}
Run Code Online (Sandbox Code Playgroud)

这可以通过格式字符串很容易地完成......

print(conf['k2'].format(x=x))
val2 as well as val3
Run Code Online (Sandbox Code Playgroud)

但如何对 f 字符串执行同样的操作呢?

python yaml python-3.6 f-string

5
推荐指数
1
解决办法
4349
查看次数

在 yaml 中是否有合并键的说明符?

即有没有办法转换这个例子:

myhash:
  - name: name1
    value: value1
myhash:
  - name: name2
    value: value2
Run Code Online (Sandbox Code Playgroud)

进入:

myhash:
  - name: name1
    value: value1
  - name: name2
    value: value2
Run Code Online (Sandbox Code Playgroud)

一旦我注意到默认情况下 YAML 将其转换为:

myhash:
  - name: name2
    value: value2
Run Code Online (Sandbox Code Playgroud)

hash merge yaml key

3
推荐指数
1
解决办法
2478
查看次数

合并嵌套的 Yaml 数组

这是 Ben 帖子的后续内容,有 YAML 语法用于共享列表或地图的一部分,尽管我在合并两个数组后更进一步并第三次继承。

我正在创建一个docker-compose.yml文件并想要做锚点和别名

x-template:
  base-template: &base-template
    environemt:
      FOO=BAR
  custom-template-1: &custom-template1
    <<: *base-template
    environment+:
      FOO2=BAR2

services:
  service-1:
    <<: *custom-template1
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

Unsupported config option for services.service-1: 'environment+'
Run Code Online (Sandbox Code Playgroud)

如果我不使用environment+:custom-tamplate-1:,如果我定义级别,或者environment+:service-1:它工作的水平。

我希望结果是

services:
  service-1:
    environment:
      FOO:BAR
      FOO2:BAR2
Run Code Online (Sandbox Code Playgroud)

有可能实现我想要的吗?

arrays dictionary yaml docker-compose

3
推荐指数
1
解决办法
3999
查看次数