问题标签 [pyyaml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2096 浏览

python - Python yaml 输出 - 浮点精度?

我正在使用 pyyaml 从 python 字典中输出 yaml 文件,并且想知道当它们写入文件时如何设置浮点数的精度或输出格式。

如何创建 yaml.dumper 来处理这个问题?

0 投票
1 回答
1652 浏览

python - 使用 PyYAML 序列化对象时如何忽略成员?

Trivial._ignore序列化此对象时如何忽略成员?

印刷

0 投票
1 回答
1742 浏览

python - 如何将函数调用应用于别名?

我的目标是允许一种简单的方法来“过滤”先前定义的节点。考虑这个虚构的 YAML 文件:

我需要在 YAML 文件或解析此文件的 Python 代码中定义什么,以便以*fruitref(即先前定义的对象,在本例中为映射)作为参数调用自定义函数并获取返回值?目标是“过滤”先前定义的值(映射、序列等)的简单而简洁的语法。

笔记

在我看来,构造!标签 *别名是无效的 YAML,因为错误:

这很可能意味着我将无法实现所需的语法,但我确实关心简洁性(或者更确切地说,目标用户会关心)。

采取的路线

YAML:!!python/object/apply:__main__.rotten [*fruitref]

它有效,但对于预期用途而言过于冗长;并且不需要多个参数,用例始终是别名的过滤器(先前定义的映射/序列/对象)。

YAML:%TAG !f! !!python/object/apply:__main__.

也许!f!rotten [*fruitref]可以接受,但我找不到如何使用该%TAG指令。
编辑:我发现这!!不适用于 PyYAML 3.10,它必须是这样的完整 URL:%TAG !f! %TAG !f! tag:yaml.org,2002:python/object/apply:__main__.

Python:yaml.add_constructor

我已经使用add_constructor将映射“投射”到我的类的特定实例;需要注意的是,标签别名似乎是无效的 YAML。

迄今为止最好的

add_constructor('!rotten', filter_rotten)在 Python 和!rotten [*fruitref]YAML 中似乎有效,但我想知道如果可能的话如何省略方括号。

0 投票
1 回答
3703 浏览

python - PyYAML 将字符串添加到列表

我对 PyYAML 很陌生,并不了解它的一切。我有一个带有列表的 YAML 文件;

我设法找出如何在我的 python 文件中获取列表,但不知道如何在其上添加另一个字符串,并将其保存到 YAML 文件中。所以它会变成

帮助表示赞赏!这是我用于读取 YAML 文件的代码:

0 投票
5 回答
8706 浏览

python - python yaml.dump 其他 YAML 格式的格式列表

我想将 Python 对象转储到 YAML 文件中,如下所示:

但不是

图像 d 是一个庞大的列表,输出变得混乱,人类看不到。

我使用:default_flow_style=False但这使用新的行列表项格式。

我已经使用客户倾倒器来阻止锚点。

0 投票
1 回答
531 浏览

yaml - 如何更正此 YAML 格式错误?

我一直在定义一个新的 YAML 文档,但是在尝试处理该文件时,我从 yamllint 收到以下错误:

以及运行测试时 PyCharm 中的以下错误:

ScannerError:“”第 2 行第 11 列中不允许映射值<string>:名称:testFirstNameLower

对于以下代码:

看起来它的格式正确,但我不知道我在做什么错......

0 投票
2 回答
276 浏览

python - 序列化时间与反序列化时间的 PyYAML 路径

我正在开发一个游戏引擎,其中包括一个简单的 GUI 开发工具。GUI 工具允许用户定义各种实体和组件,然后可以将其保存在配置文件中。当游戏引擎运行时加载配置文件时,它可以确定如何创建各种实体和组件以供游戏使用。

对于配置文件保存机制,我使用的是 PyYAML。我遇到的问题源于这样一个事实,即序列化过程发生在一个模块中,该模块与通过 PyYAML 加载和解析文件的模块位于不同的目录中。

简化的串行器

这需要context对象,这是一个dict代表各种游戏对象的对象,并将其写入配置文件。这没有问题。

引擎中的简化反序列化器

这就是问题发生的地方。在 上yaml.load(config_file),我会收到一个错误,因为它无法在某个模块上找到各种名称。我明白为什么会这样。例如,当我序列化配置文件时,它会将一个AssetComponent(引擎中的组件类型)列为 at engine.common.AssetComponent。但是,从反序列化器的角度来看,AssetComponent应该只是 at common.AssetComponent(因为反序列化代码本身存在于engine包中),因此无法在engine.

有没有办法在使用 PyYAML 进行序列化或反序列化时手动处理路径?我想确保它们都是从同一个“角度”发生的。

编辑: 以下显示有问题的配置文件可能是什么样子,然后是手动更正的配置的样子

有问题的

已更正

0 投票
2 回答
2334 浏览

python-3.x - PyYaml parses '9:00' as int

I have a file with the following data:

(and so on up to 21:00)

I use python3 and yaml module to parse it. Precisely, the source is config = yaml.load (open (filename, 'r')). But then, when I print config, I get the following output for this part of data:

The values in the list are ints.

While previously, when I used python2 (and BaseLoader for YAML), I got the values as strings, and I use them as such. BaseLoader is now not acceptable since I want to read unicode strings from file, and it gives me byte-strings.

So, first, why pyyaml does parse my data as ints?

And, second, how do I prevent pyyaml from doing this? Is it possible to do that without changing data file (e.g. without adding !!str)?

0 投票
1 回答
1292 浏览

python - 如何使用 PyYAML 重命名密钥

我已经加载了一个我想要修改的 YAML 文件(模板)(键和一些值)。

例如

如何使用 PyYAML 查找和重命名密钥?

但这仍然没有持续改变

0 投票
2 回答
2171 浏览

linux - 在没有 root 或 sudo 的情况下安装 PyYAML 和 libyaml

我需要使用 libyaml 绑定设置 PyYAML。我正在开发 5.7 版的 Red Hat Enterprise Linux 客户端,并且我在 $PATH 下安装了 Enthought Python 7.3.2 的本地副本/tools/Devel/epd_free-7.3-2rh5-x86_64 并已添加/tools/Devel/epd_free-7.3-2rh5-x86_64/bin到 $PATH

我正在处理这个本地副本,因为我在机器上没有 root 或 sudo 访问权限。

要安装 libyaml,我已经完成了:

这创造了

但是,当我尝试安装 PyYAML 时,我得到了

我认为这是因为 PyYAML 在默认位置寻找 libyaml。是否可以为 pyyaml 安装指定 libyaml 的位置?