import os, sys, json from os import walk # for walking a directory ERR = ''' ERROR:: Program requires three parameters! ARGUMENTS:: 1. ngc file path 2. json file path 3. (e)xtract or (i)nsert or (d)elete ''' def get_json_object(lines): jsonlines = [] index = 0 while index < len(lines): line = lines[index] if len(line) < 1: continue if line[0] == '%': break else: jsonlines.append(line[1:len(line)-1]) # get the line removing the semicolon index += 1 string = '\n'.join(jsonlines) return string, json.loads(string) def insert_json(lines, jsonlines): string = ' '.join(jsonlines) for line in reversed(jsonlines): lines.insert(0, ';' + line) return lines def delete_json(lines): index = 0 while index < len(lines): line = lines[index] if len(line) < 1: continue if line[0] == '%': break index += 1 return lines[index : len(lines)-1] def read_lines(path): lines = [] with open(path) as f: lines = f.readlines() return lines def write_lines(path, lines): with open(path, "w") as f: f.write(''.join(lines)) def handle_arguments(): args = sys.argv if len(args) == 1: print ERR return elif len(args) < 4: print ERR return else: ngc_path = args[1] json_path = args[2] action = args[3] if action == 'e': string, obj = get_json_object(read_lines(ngc_path)) elif action == 'i': jsonlines = read_lines(json_path) write_lines(ngc_path, insert_json(read_lines(ngc_path), jsonlines)) elif action == 'd': write_lines(ngc_path, delete_json(read_lines(ngc_path))) else: print("ERROR:: unknown action " + action + "!") return if __name__ == '__main__': handle_arguments()