问题标签 [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.
python - Python yaml 输出 - 浮点精度?
我正在使用 pyyaml 从 python 字典中输出 yaml 文件,并且想知道当它们写入文件时如何设置浮点数的精度或输出格式。
如何创建 yaml.dumper 来处理这个问题?
python - 使用 PyYAML 序列化对象时如何忽略成员?
Trivial._ignore
序列化此对象时如何忽略成员?
印刷
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 中似乎有效,但我想知道如果可能的话如何省略方括号。
python - PyYAML 将字符串添加到列表
我对 PyYAML 很陌生,并不了解它的一切。我有一个带有列表的 YAML 文件;
我设法找出如何在我的 python 文件中获取列表,但不知道如何在其上添加另一个字符串,并将其保存到 YAML 文件中。所以它会变成
帮助表示赞赏!这是我用于读取 YAML 文件的代码:
python - python yaml.dump 其他 YAML 格式的格式列表
我想将 Python 对象转储到 YAML 文件中,如下所示:
但不是
图像 d 是一个庞大的列表,输出变得混乱,人类看不到。
我使用:default_flow_style=False
但这使用新的行列表项格式。
我已经使用客户倾倒器来阻止锚点。
yaml - 如何更正此 YAML 格式错误?
我一直在定义一个新的 YAML 文档,但是在尝试处理该文件时,我从 yamllint 收到以下错误:
以及运行测试时 PyCharm 中的以下错误:
ScannerError:“”第 2 行第 11 列中不允许映射值
<string>
:名称:testFirstNameLower
对于以下代码:
看起来它的格式正确,但我不知道我在做什么错......
python - 序列化时间与反序列化时间的 PyYAML 路径
我正在开发一个游戏引擎,其中包括一个简单的 GUI 开发工具。GUI 工具允许用户定义各种实体和组件,然后可以将其保存在配置文件中。当游戏引擎运行时加载配置文件时,它可以确定如何创建各种实体和组件以供游戏使用。
对于配置文件保存机制,我使用的是 PyYAML。我遇到的问题源于这样一个事实,即序列化过程发生在一个模块中,该模块与通过 PyYAML 加载和解析文件的模块位于不同的目录中。
简化的串行器
这需要context
对象,这是一个dict
代表各种游戏对象的对象,并将其写入配置文件。这没有问题。
引擎中的简化反序列化器
这就是问题发生的地方。在 上yaml.load(config_file)
,我会收到一个错误,因为它无法在某个模块上找到各种名称。我明白为什么会这样。例如,当我序列化配置文件时,它会将一个AssetComponent
(引擎中的组件类型)列为 at engine.common.AssetComponent
。但是,从反序列化器的角度来看,AssetComponent
应该只是 at common.AssetComponent
(因为反序列化代码本身存在于engine
包中),因此无法在engine
.
有没有办法在使用 PyYAML 进行序列化或反序列化时手动处理路径?我想确保它们都是从同一个“角度”发生的。
编辑: 以下显示有问题的配置文件可能是什么样子,然后是手动更正的配置的样子
有问题的
已更正
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
)?
python - 如何使用 PyYAML 重命名密钥
我已经加载了一个我想要修改的 YAML 文件(模板)(键和一些值)。
例如
如何使用 PyYAML 查找和重命名密钥?
但这仍然没有持续改变
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 的位置?