PYYAML Constructor
This commit is contained in:
parent
f31f9fe8ee
commit
3cf5a7fc42
|
@ -1,6 +1,46 @@
|
||||||
---
|
---
|
||||||
title: "Easy pyyaml '!include' Tag"
|
title: "Easy pyyaml '!include' Tag"
|
||||||
date: 2020-04-28T20:59:26+02:00
|
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.
|
||||||
|
|
Loading…
Reference in New Issue