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 = """\
|
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())
|
||||||
|
|||||||
Reference in New Issue
Block a user