mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-03 20:53:54 +01:00
67 lines
1.5 KiB
Python
67 lines
1.5 KiB
Python
|
#!/usr/bin/env python
|
||
|
import os
|
||
|
import json
|
||
|
|
||
|
def fix_json(s):
|
||
|
"""Properly termitates an incomplete JSON file"""
|
||
|
|
||
|
s = s.replace(' ','')
|
||
|
s = s.replace('\n','')
|
||
|
s = s.replace('\t','')
|
||
|
s = s.replace(",{}",'')
|
||
|
tmp = [ c for c in s if c in "[]{}" ]
|
||
|
tmp = "".join(tmp)
|
||
|
tmp_old = ""
|
||
|
while tmp != tmp_old:
|
||
|
tmp_old = tmp
|
||
|
tmp = tmp.replace("{}","")
|
||
|
tmp = tmp.replace("[]","")
|
||
|
while s[-1] in [ ',', '\n', ' ', '\t' ]:
|
||
|
s = s[:-1]
|
||
|
tmp = [ c for c in tmp ]
|
||
|
tmp.reverse()
|
||
|
for c in tmp:
|
||
|
if c == '[': s += "]"
|
||
|
elif c == '{': s += "}"
|
||
|
return s
|
||
|
|
||
|
|
||
|
def load(filename):
|
||
|
"""Loads a JSON file after calling the fix_json function."""
|
||
|
with open(filename,'r') as f:
|
||
|
data = f.read()
|
||
|
new_data = fix_json(data)
|
||
|
return json.loads(new_data)
|
||
|
|
||
|
|
||
|
def load_all(ezfio_filename):
|
||
|
"""Loads all JSON files of an EZFIO."""
|
||
|
d = {}
|
||
|
prefix = ezfio_filename+'/json/'
|
||
|
for filename in [ x for x in os.listdir(prefix) if x.endswith(".json")]:
|
||
|
d[filename] = load(prefix+filename)
|
||
|
return d
|
||
|
|
||
|
|
||
|
def load_last(ezfio_filename):
|
||
|
"""Loads last JSON file of an EZFIO."""
|
||
|
d = {}
|
||
|
prefix = ezfio_filename+'/json/'
|
||
|
l = [ x for x in os.listdir(prefix) if x.endswith(".json")]
|
||
|
l.sort()
|
||
|
filename = l[-1]
|
||
|
print(filename)
|
||
|
return load(prefix+filename)
|
||
|
|
||
|
|
||
|
def fix(ezfio_filename):
|
||
|
"""Fixes all JSON files in an EZFIO."""
|
||
|
d = load_all(ezfio_filename)
|
||
|
prefix = ezfio_filename+'/json/'
|
||
|
for filename in d.keys():
|
||
|
with open(prefix+filename, 'w') as json_file:
|
||
|
json.dump(d[filename], json_file)
|
||
|
|
||
|
|
||
|
|