PYYAML Constructor

This commit is contained in:
jpk 2020-04-28 21:25:13 +02:00
parent f31f9fe8ee
commit 3cf5a7fc42
1 changed files with 41 additions and 1 deletions

View File

@ -1,6 +1,46 @@
---
title: "Easy pyyaml '!include' Tag"
date: 2020-04-28T20:59:26+02:00
draft: true
---
# Easy pyymal file inclusion
YAML does not support file inclusion. If this feature is needed, it is necessary to write your own constructor to support a new tag like `!include`.
## Example YAML files
**foo.yaml:**
```yaml
hello: !include bar.yaml
```
**bar.yaml:**
```yaml
'world'
```
**resulting yaml:**
```yaml
hello: 'world'
```
## Example code
```python
import yaml
def include_constructor(loader, node):
filename = node.value
include = yaml.load(open(filename, 'r'), Loader=yaml.SafeLoader)
return include
Loader = yaml.CLoader
Loader.add_constructor(u'!include', include_constructor)
yaml_data = yaml.load(open('foo.yaml', 'r'), Loader=yaml.CLoader)
```
KTHXBYE.