[docs]defmain():parser=argparse.ArgumentParser(description=""" Reads and parses the embedded metadata of a .SSFZ file created by Anton Paar SAXSquant software, converts it to JSON format and outputs it to <stdout>. An output file path for the JSON data can be provided by optional argument. """)parser.add_argument("ssfzPath",type=lambdap:Path(p).absolute(),help="Path of the input .SSFZ file to read.",)parser.add_argument("-o","--out",nargs="?",default="stdout",help=("Output file path to write the JSON data to. If the filename is omitted, ""it is derived from the input file name by adding the .json suffix."),)args=parser.parse_args()# print(args)ifnotargs.ssfzPath.is_file():print(f"Provided file '{args.ssfzPath}' not found!")return1data=readSSFZ(args.ssfzPath)json_args=dict(sort_keys=True,indent=2)ifargs.out=="stdout":print(json.dumps(data,**json_args))else:ifargs.outisNone:args.out=args.ssfzPath.with_suffix(args.ssfzPath.suffix+".json")ifnotPath(args.out).parent.is_dir():print(f"Directory of provided output file '{args.out}' does not exist!")return1withopen(args.out,"w")asfd:json.dump(data,fd,**json_args)print(f"Wrote '{args.out}'.")return0