def printKey(): if len(sys.argv) < 4: print(msg_help_printkey) return try: indata = load(sys.argv[2]) except: return "No JSON object could be decoded" if not indata: print(msg_file_not_found) return if not isin(indata, sys.argv[1]): print("no found!") else: for value in findkey(indata, sys.argv[1]): if not isinstance(value, list): print("the corresponding value is not list!") break for item in value: if not isinstance(item, dict): continue output = "" for index in range(3, len(sys.argv)): subkey = sys.argv[index] if not isin(item, subkey): continue subvalue = findkey(item, subkey) try: output += " %s" % str(subvalue) except: continue print(output)
def delKey(): if len(sys.argv) < 3: print(msg_help_delkey) return elif len(sys.argv) == 3: answer = raw_input( msg_no_output) if sys.version_info[0] == 2 else input( msg_no_output) if not answer or any(symbol in answer[0] for symbol in yes_symbols): outpath = sys.argv[2] elif any(symbol in answer[0] for symbol in no_symbols): return else: outpath = answer else: outpath = sys.argv[3] try: indata = load(sys.argv[2]) key = sys.argv[1] except: return "No JSON object could be decoded" if not indata: print(msg_file_not_found) return delkey(indata, key) rmempty(indata) save(indata, outpath)
def replValue(): if len(sys.argv) < 5: print(msg_help_replvalue) return elif len(sys.argv) == 5: answer = raw_input( msg_no_output) if sys.version_info[0] == 2 else input( msg_no_output) if not answer or any(symbol in answer[0] for symbol in yes_symbols): outpath = sys.argv[4] elif any(symbol in answer[0] for symbol in no_symbols): return else: outpath = answer elif len(sys.argv[5]) == 1: answer = sys.argv[5] outpath = sys.argv[4] else: outpath = sys.argv[5] # load try: indata = load(sys.argv[4]) except: return "No JSON object could be decoded" if not indata: print(msg_file_not_found) return # process replvalue(indata, sys.argv[1], sys.argv[2], sys.argv[3]) # save if answer and any(symbol in answer[0] for symbol in print_symbols): print(indata) return else: save(indata, outpath)
def beautify(): if len(sys.argv) < 2: print(msg_help_rmempty) return elif len(sys.argv) == 2: answer = raw_input( msg_no_output) if sys.version_info[0] == 2 else input( msg_no_output) if not answer or any(symbol in answer[0] for symbol in yes_symbols): outpath = sys.argv[1] elif any(symbol in answer[0] for symbol in no_symbols): return else: outpath = answer else: outpath = sys.argv[2] # load try: indata = load(sys.argv[1]) except: return "No JSON object could be decoded" if not indata: print(msg_file_not_found) return # save save(indata, outpath)
def main(): parser.add_argument( '-m', '--mode', default='json', help='modes: json, document, hack, file, network (default: json)') parser.add_argument('-x', '--func', default='delkey', help='functions: delkey,rmkey ...') parser.add_argument('-d', '--data', default='', help='input data') parser.add_argument('-i', '--inpath', default='', help='indicates input file path.') parser.add_argument('-o', '--outpath', default='', help='indicates output file path.') args = parser.parse_args() from handy.misc import switch for mode in switch(args.mode): if mode('json'): for func in switch(args.func): from handy.jzon.handler import load, save from handy.dict.mixedict import delkey, rmempty, isin if func('delkey'): if not args.inpath: print('add input path with -i/--inpath.') break if not args.data: print('add keyname to be deleted with -d/--data.') break if not args.outpath: answer = raw_input( msg_no_output ) if sys.version_info[0] == 2 else input(msg_no_output) if any(symbol in answer[0] for symbol in yes_symbols): args.outpath = args.inpath elif any(symbol in answer[0] for symbol in no_symbols): break else: args.outpath = answer data = load(args.inpath) if not data: print("input file doesn't exist or wrong file.") break delkey(data, args.data) rmempty(data) save(data, args.outpath) break if func(): print('type mode with -x or --func.\n \ modes: delkey, rmempty') break break if mode(): print('type mode with -m or --mode') break
def chKey(): if len(sys.argv) < 3: print(msg_help_chkey) return try: indata = load(sys.argv[2]) except: return "No JSON object could be decoded" if not indata: print(msg_file_not_found) return if not isin(indata, sys.argv[1]): print("no found!") else: print("found!!!")