标签: pyyaml

为PyYAML转储的某些部分指定样式

我正在使用YAML作为计算机和人类可编辑和可读的模拟器输入格式.对于人类可读性,输入的某些部分主要适合于阻止样式,而流动样式更适合其他部分.

PyYAML的默认设置是在嵌套地图或序列的任何地方使用块样式,在其他任何地方使用流样式.*default_flow_style*允许选择all-flow-style或all-block-style.

但我想输出更多的表格文件

bonds:
- { strength: 2.0 }
- ...
tiles:
- { color: red, edges: [1, 0, 0, 1], stoic: 0.1}
- ...
args: 
    block: 2
    Gse: 9.4
Run Code Online (Sandbox Code Playgroud)

可以看出,这并不是贯穿整个样式的一致模式,而是根据文件的部分而改变.本质上,我希望能够指定某些块样式序列中的所有值都是流式样.有没有办法对转储进行那种精细级别的控制?能够以特定顺序转储顶级映射而不需要该顺序(例如,omap)对于可读性而言将是好的.

yaml pyyaml

8
推荐指数
1
解决办法
2513
查看次数

pyyaml safe_load:如何忽略本地标签

我正在使用yaml.safe_load()但我需要忽略标签!v2- 有没有办法做到这一点但仍然使用safe_load()

python yaml pyyaml

8
推荐指数
2
解决办法
3982
查看次数

如何使用pyYAML将python元组添加到YAML文件中?

标题相当不言自明.

当我将元组保存到YAML文件时,我得到的内容如下所示:

ambient:  !!python/tuple [0.3, 0.3 ,0.3]
Run Code Online (Sandbox Code Playgroud)

当我尝试使用yaml.safe_load(file_object)加载它时,我不断收到如下错误:

yaml.constructor.ConstructorError:  could not determine a constructor for the tag 'tag:yaml.org,2002:python/tuple'
Run Code Online (Sandbox Code Playgroud)

需要做什么?

python pyyaml

7
推荐指数
2
解决办法
1万
查看次数

将 yaml 解析为 Python 中的列表

我需要在项目中使用 YAML。我有一个 YAML 文件,我用它来填充与数据交互的 Python 程序中的列表。

我的数据如下所示:

Employees:
    custid: 200
    user: Ash
        - Smith
        - Cox
Run Code Online (Sandbox Code Playgroud)

我需要 python 代码来迭代这个 YAML 文件并填充这样的列表:

list_of_Employees = ['Ash', 'Smith' 'Cox']
Run Code Online (Sandbox Code Playgroud)

我知道我必须打开文件,然后将数据存储在一个变量中,但我无法弄清楚如何在列表中分别输入每个元素。理想情况下,我想使用 append 函数,这样我就不必每次都确定我的“用户”大小。

python yaml list pyyaml

7
推荐指数
2
解决办法
3万
查看次数

将 YAML 配置值输入到 Python 的关键字参数中

我想要一个 YAML 配置文件,用于我的 Python 脚本的某些分析设置。YAML 文件看起来像这样:

settings:
  param1: 1
  param2: two
  ...
Run Code Online (Sandbox Code Playgroud)

在我的 Python 脚本中,我想将这些值作为关键字参数传递给函数。加载 YAML 文件会为我提供一本字典。该函数只有关键字参数,我事先不知道配置文件将具有哪些关键字参数。该函数看起来像这样:

def process(param1=None, param2=None, param3=None):
    ...
Run Code Online (Sandbox Code Playgroud)

请注意,YAML 设置的名称与关键字参数名称相同。该函数有几个可能的关键字参数,而配置文件可能只有一两个。显然,我想将值分配给正确的关键字参数。

如何将 YAML 值(和/或字典)分配给它们的关键字参数分配?

python pyyaml python-3.x

7
推荐指数
1
解决办法
2万
查看次数

我可以在yaml/pyyaml中转储空白而不是null吗?

使用PyYAML,如果我在dict中读入包含空值的文件:

test_str = '''
attrs:
  first:
  second: value2
'''
Run Code Online (Sandbox Code Playgroud)

这将返回None密钥first:

>>> data = yaml.load(test_str)
>>> data
{'attrs': {'second': 'value2', 'first': None}}
Run Code Online (Sandbox Code Playgroud)

但在写作时,该None值将替换为null:

>>> print(yaml.dump(data, default_flow_style=False))
attrs:
  first: null
  second: value2
Run Code Online (Sandbox Code Playgroud)

有没有办法格式化转储输出以打印空白标量而不是null

python yaml pyyaml

7
推荐指数
3
解决办法
4174
查看次数

PyYAML 转储布尔值

我正在从 YAML 文件加载 yaml True/False 项目(下面的示例)。

gzip: False
Run Code Online (Sandbox Code Playgroud)

这在 Jinja2 模板中被正确解释为布尔值 True。

另一个脚本正在读取同一个 YAML 文件,将其作为 python CGI 表单数据传递,并最终使用以下命令写入 YAML 文件

with open(myyaml, 'w') as yaml_file:
    yaml_file.write(yaml.dump(dict, default_flow_style=False)) 
Run Code Online (Sandbox Code Playgroud)

问题是,这会用单引号写入 True/False

gzip: 'False'
Run Code Online (Sandbox Code Playgroud)

这会导致 jinja2 模板不将值解释为布尔值,并且始终将值设置为 true

{{ if gzip }}
Run Code Online (Sandbox Code Playgroud)

有没有办法转储带有 True/False 值的 YAML 文件,这些值被视为布尔值(我的意思是不带引号)。

python jinja2 pyyaml

7
推荐指数
1
解决办法
1万
查看次数

根据 YAML 1.1 规范,“yes”真的是“true”的别名吗?1.2 规格?

我正在尝试调试一个问题,它归结为......

>>> import yaml as pyyaml
>>> import ruamel.yaml as ruamel
>>> ruamel.load("x: yes") == ruamel.load("x: true")
False
>>> pyyaml.safe_load("x: yes") == pyyaml.safe_load("x: true")
True
Run Code Online (Sandbox Code Playgroud)

互联网上有传言称“yes”和“no”是保留词,分别是和 的同义词。truefalse

但 1.1 规范中只是顺便提及,但没有详细说明,并且字符串“yes”根本没有出现在1.2 规范中。

事实上,仔细查看规范的每个草案,它只会以合法的方式以任何合法的方式出现在https://yaml.org/spec/history/2002-09-01.html中,并在之后的修订中被删除。

我怀疑我在写它的过程中已经回答了我自己的问题,但是......这个关于“是/否”的事情只是胡说八道吗?它进入了实现(我的编辑甚至强调“是/否”作为特殊),或者我误解或遗漏了规范的一部分?

python yaml pyyaml ruamel.yaml

7
推荐指数
2
解决办法
2327
查看次数

PyYAML 错误:无法确定标签“!vault”的构造函数

我正在尝试读取包含该标签的 YAML 文件!vault。我收到错误:

无法确定标签“!vault”的构造函数

在阅读了几篇博客后,我了解到我需要指定一些构造函数来解决此问题,但我不清楚如何做到这一点。

import yaml
from yaml.loader import SafeLoader
    
with open('test.yml' ) as stream:
    try:
        inventory_info = yaml.safe_load(stream)
    except yaml.YAMLError as exc:
        print(exc)

User = inventory_info['all']['children']['linux']['vars']['user']
key = inventory_info['all']['children']['linux']['vars']['key_file']
Run Code Online (Sandbox Code Playgroud)

我正在使用的 YAML 文件:

all:
  children:
    rhel:
      hosts: 172.18.144.98
    centos:
      hosts: 172.18.144.98  
    linux:
      children:
        rhel:
        centos:
      vars:
        user: "o9ansibleuser"
        key_file: "test.pem"
        ansible_password: !vault |
          $ANSIBLE_VAULT;2.1;AES256
          3234567899353936376166353
Run Code Online (Sandbox Code Playgroud)

python yaml pyyaml ansible-vault

7
推荐指数
1
解决办法
5346
查看次数

导入 PyYAML、cltk 时出现问题

我刚拿到一台MacBook,克隆了我正在做的项目,然后去设置python环境。创建环境后,我更新了 pip 并尝试使用pip install -r requirements.txt. 给我带来问题的 3 个库是cltkPyYAMLstanza

\n

这是执行后给我的pip install -r requirements.txt

\n
Collecting PyYAML==5.4.1 (from -r requirements.txt (line 56))\n  Using cached PyYAML-5.4.1.tar.gz (175 kB)\n  Installing build dependencies ... done\n  Getting requirements to build wheel ... error\n  error: subprocess-exited-with-error\n  \n  \xc3\x97 Getting requirements to build wheel did not run successfully.\n  \xe2\x94\x82 exit code: 1\n  \xe2\x95\xb0\xe2\x94\x80> [62 lines of output]\n      running egg_info\n      writing lib3/PyYAML.egg-info/PKG-INFO\n      writing dependency_links to lib3/PyYAML.egg-info/dependency_links.txt\n      writing …
Run Code Online (Sandbox Code Playgroud)

macos pip setuptools pyyaml pyenv

7
推荐指数
2
解决办法
7665
查看次数

标签 统计

pyyaml ×10

python ×8

yaml ×6

ansible-vault ×1

jinja2 ×1

list ×1

macos ×1

pip ×1

pyenv ×1

python-3.x ×1

ruamel.yaml ×1

setuptools ×1