PYYAML Constructor
This commit is contained in:
parent
f31f9fe8ee
commit
3cf5a7fc42
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue