-
Notifications
You must be signed in to change notification settings - Fork 0
/
ddoif_utils.py
121 lines (71 loc) · 2.94 KB
/
ddoif_utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 28 23:15:17 2020
@author: malrawi
"""
import dicttoxml
import ruamel.yaml # https://pypi.org/project/ruamel.yaml/
import json
def read_yaml_as_dict(fname):
"""
A function used to read the ddoif dictionary in yaml format and return it as a python dictionary.
This functiona makes use of ruamel.yaml https://pypi.org/project/ruamel.yaml/
...
Input arguments
----------
- in_f: the name of yaml file
Output arguments:
- ddoif_dict: All attributes the ddoif dictionary
Methods
-------
ddoif_dict = ddoif_read(in_f='ATest.ddof', check_CRC=True)
"""
with open(fname) as fp:
# The FullLoader parameter handles the conversion from YAML
# scalar values to Python the dictionary format
# ddoif_dict = yaml.load(fp, Loader=yaml.FullLoader)
# ddoif_dict = yaml.safe_load(fp)
yaml = ruamel.yaml.YAML(typ='safe') # this is claimed to be the safest way to load yaml https://stackoverflow.com/questions/50846431/converting-a-yaml-file-to-python-json-object
ddoif_dict = yaml.load(fp)
return ddoif_dict
def yaml_to_xml(yaml_fname, xml_fname, ids=False):
"""
A function used to read the ddoif dictionary in yaml format and save it into an xml file.
This function makes use of dicttoxml package.
...
Input arguments
----------
- yaml_fname: the name of yaml file as input
- xml_fname: the name of output xml file
Output arguments:
Methods
-------
yaml_to_xml('ddoif_dictionary.yaml', 'ddoif_dictionary.xml')
"""
yaml_dict = read_yaml_as_dict(yaml_fname)
xml_obj = dicttoxml.dicttoxml(yaml_dict, custom_root='ddoif', attr_type=False, ids=ids)
print('Converting to xml using dicttoxml version -- ', dicttoxml.__version__)
# print_xml(xml_obj)
with open(xml_fname, "wb") as fp:
fp.write(xml_obj)
def yaml_to_json(yaml_fname, json_fname):
"""
A function used to read the ddoif dictionary in yaml format and save it into a json file.
This functiona makes use of json package.
...
Input arguments:
----------
- yaml_fname: the name of yaml file as input
- json_fname: the name of ouput json file
Output arguments:
Methods:
-------
yaml_to_xml('ddoif_dictionary.yaml', 'ddoif_dictionary.xml')
"""
yaml_dict = read_yaml_as_dict(yaml_fname)
with open(json_fname, 'w') as fp:
json.dump(yaml_dict, fp, indent=True, )
def print_xml(xml_obj): # xml_obj = dicttoxml.dicttoxml(yaml_dict, custom_root='ddoif', attr_type=False)
from xml.dom.minidom import parseString
dom = parseString(xml_obj)
print(dom.toprettyxml())