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