-
Notifications
You must be signed in to change notification settings - Fork 13
/
utils.py
65 lines (52 loc) · 1.81 KB
/
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
# -*- encoding: utf-8 -*-
import os
import json
from odoo_rpc_client.utils import (normalizeSField, # noqa
wpartial, # noqa
preprocess_args, # noqa
stdcall, # noqa
UConverter, # noqa
ustr, # noqa
DirMixIn, # noqa
AttrDict) # noqa
__all__ = ('ustr',
'AttrDict',
'DirMixIn',
'UConverter',
'wpartial',
'makedirs',
'json_read',
'json_write',
'xinput',
)
# Python 2/3 workaround in raw_input
try:
xinput = raw_input
except NameError:
xinput = input
def makedirs(path):
""" os.makedirs wrapper. No errors raised if directory already exists
:param str path: directory path to create
"""
try:
os.makedirs(path)
except os.error:
pass
def json_read(file_path):
""" Read specified json file
"""
with open(file_path, 'rt') as json_data:
data = json.load(json_data)
return data
def json_write(file_path, *args, **kwargs):
""" Write data to specified json file
Note, this function uses dumps function to convert data to json first,
and write only if conversion is successfule. This allows to avoid
loss of data when rewriting file.
"""
# note, using dumps instead of dump, because we need to check if data will
# be dumped correctly. using dump on incorect data, causes file to be half
# written, and thus broken
json_data = json.dumps(*args, **kwargs)
with open(file_path, 'wt') as json_file:
json_file.write(json_data)