Mercurial > repos > nml > combine_json
view combineJSON.py @ 0:116510205617 draft
planemo upload commit dd7f4dc22bbe2f26aafd07a345997db79d9e5ad1
author | nml |
---|---|
date | Wed, 07 Mar 2018 11:39:06 -0500 |
parents | |
children | 661bc10b0612 |
line wrap: on
line source
#!/usr/bin/env python import argparse import json import sys def init_parser(): parser = argparse.ArgumentParser( prog="combineJSON", formatter_class=argparse.RawDescriptionHelpFormatter, description="Combine JSON data arrays into a single array") parser.add_argument('-i', nargs='*', help="Input JSON files to be combined") parser.add_argument('-o', help='Output file name') return parser parser = init_parser() args = parser.parse_args() input_files = args.i json_file = [] if input_files is None or len(input_files) < 2: print('Not enough input files. ' 'Please use -i filename.txt filename1.txt ' 'to combine JSON data files') sys.exit(0) for file_path in input_files: try: # Attempt to open each input file, parse as JSON with open(file_path, 'r') as curr_file: file_data = curr_file.read() parsed_json_file = json.loads(file_data) # Append each valid JSON data array for entry in parsed_json_file: json_file.append(entry) except Exception as e: print("Help! I can't parse this file {}. " "Are you sure this is a valid JSON file?" .format(file_path)) raise(e) if args.o: with open(args.o, 'w') as out_json: json.dump(json_file, out_json) else: print(json.dumps(json_file))