I have a dictionary, I am converting dictionary to yaml using yaml
module in python. But Yaml is not converting properly.
output_data = {
'resources': [{
'type': 'compute.v1.instance',
'name': 'vm-created-by-deployment-manager',
'properties': {
'disks': [{
'deviceName': '$disks_deviceName$',
'boot': '$disks_boot$',
'initializeParams': {
'sourceImage': '$disks_initializeParams_sourceImage$'
},
'autoDelete': '$disks_autoDelete$',
'type': '$disks_type$'
}],
'machineType': '$machineType$',
'zone': '$zone$',
'networkInterfaces': [{
'network': '$networkInterfaces_network$'
}]
}
}]
}
I tried :
import yaml
f = open('meta.yaml', 'w+')
yaml.dump(output_data, f, allow_unicode=True)
I am getting meta.yaml
file as following:
resources:
- name: vm-created-by-deployment-manager
properties:
disks:
- autoDelete: $disks_autoDelete$
boot: $disks_boot$
deviceName: $disks_deviceName$
initializeParams: {sourceImage: $disks_initializeParams_sourceImage$}
type: $disks_type$
machineType: $machineType$
networkInterfaces:
- {network: $networkInterfaces_network$}
zone: $zone$
type: compute.v1.instance
Here, {sourceImage: $disks_initializeParams_sourceImage$}
and {network: $networkInterfaces_network$}
is getting like dictionary
. It means inner
dictionary contents are not converting to yaml.
I also tried,
output_data = eval(json.dumps(output_data))
ff = open('meta.yaml', 'w+')
yaml.dump(output_data, ff, allow_unicode=True)
But getting same yaml
file content.
How can I convert complete dictinary to yaml in Python?
By default, PyYAML
chooses the style of a collection depending on whether it has nested collections. If a collection has nested collections, it will be assigned the block style. Otherwise it will have the flow style.
If you want collections to be always serialized in the block style, set the parameter default_flow_style
of dump() to False
. For instance,
> `print(yaml.dump(yaml.load(document), default_flow_style=False))`
>> Result: `a: 1 b: c: 3 d: 4`
Documentation: https://pyyaml.org/wiki/PyYAMLDocumentation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With