redefine complex defs in simple defs and rename defs and variables

This commit is contained in:
2019-02-06 13:19:05 +01:00
parent 4b57622e51
commit 4d8c96cfae

View File

@@ -20,28 +20,60 @@ VERSION = """\
EPILOG = """\ EPILOG = """\
""" """
def list_files():
def read_dir(dir, exclude=[]):
"""\ """\
List all materials Read all files in directory as list
""" """
from os import listdir from os import listdir
for data in listdir("./data"): result = []
for data in listdir(dir):
file_name = data.split('.')[0] file_name = data.split('.')[0]
if file_name != "INFO": if file_name not in exclude:
print(file_name) result.append(file_name)
return result
def read(input_file, search_keys=None):
def print_list(list):
"""\ """\
Read json file Print list
""" """
import os for data in list:
import json print(data.title())
def read_file(input_file):
"""\
Read file as string
"""
try:
with open(input_file) as data_file:
return data_file.read()
except (OSError, IOError) as err:
print(str(err))
sys.exit(2)
def print_data(data):
"""\
Convert string data to json data and print it.
"""
from json import loads
from pprint import pprint from pprint import pprint
#print(data)
pprint(loads(data))
def search_keys(data, keys=None):
"""\
Search for json keys in string data
"""
from json import loads
def find_values(key, json_repr): def find_values(key, json_repr):
results = [] results = []
def _decode_dict(a_dict): def _decode_dict(a_dict):
try: try:
results.append(a_dict[key]) results.append(a_dict[key])
@@ -49,42 +81,31 @@ def read(input_file, search_keys=None):
pass pass
return a_dict return a_dict
json.loads(json_repr, object_hook=_decode_dict) # return value ignored loads(json_repr, object_hook=_decode_dict) # return value ignored
return results return results
try: if keys is not None:
with open(os.path.join('data', input_file + '.json')) as data_file: for key in keys:
if search_keys is not None: found_values = find_values(key, data)
data = data_file.read() #print(found_values)
for search_key in search_keys: for value in found_values:
found_values = find_values(search_key, data) print(key + ' = ' + '%s' % value[0] + ' ' + value[1])
#print(found_values)
for value in found_values:
#print('%-5s' % value[0] + ' ' + value[1])
print(search_key + ' = ' + '%s' % value[0] + ' ' + value[1])
#def getLength(element): #def getLength(element):
# try: # try:
# element.__iter__ # element.__iter__
# return sum([getLength(i) for i in element]) # return sum([getLength(i) for i in element])
# except: # except:
# return 1 # return 1
#print(len(data)) #print(len(data))
#print(getLength(json.loads(data))) #print(getLength(json.loads(data)))
else:
data = json.load(data_file)
pprint(data)
except (OSError, IOError) as err:
print(str(err))
sys.exit(2)
def main(): def main():
"""\ """\
Main function Main function
""" """
from os import path
import argparse import argparse
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
@@ -104,8 +125,9 @@ def main():
help='list all available materials') help='list all available materials')
# material # material
parser_material = subparsers.add_parser('material', parser_material = subparsers.add_parser('get',
help='the material to get information from') description='Get material information.',
help='get material information')
parser_material.add_argument('materialname', action='store', parser_material.add_argument('materialname', action='store',
help='list available material information') help='list available material information')
parser_material.add_argument('-r', '--rho', dest='const_collection', parser_material.add_argument('-r', '--rho', dest='const_collection',
@@ -121,16 +143,23 @@ def main():
print(args) print(args)
if args.command == 'list': if args.command == 'list':
list_files() list = read_dir("./data", "INFO")
print_list(list)
elif args.command == 'material': elif args.command == 'get':
filename = path.join('data', args.materialname + '.json')
if args.debug:
print("filename: " + filename)
if args.const_collection: if args.const_collection:
read(args.materialname, search_keys=args.const_collection) data = read_file(filename)
search_keys(data, keys=args.const_collection)
else: else:
read(args.materialname) data = read_file(filename)
print_data(data)
return 0 return 0
if __name__ == "__main__": if __name__ == "__main__":
import sys import sys
sys.exit(main()) sys.exit(main())