redefine complex defs in simple defs and rename defs and variables
This commit is contained in:
115
materials.py
115
materials.py
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user