import json def main( paths: list[str], field: list[str], format: str = "plain", ) -> None: result = [] for path in paths: with open(path, "r") as f: data = json.load(f) value = data for key in field: value = value.get(key) if not isinstance(value, list): value = [value] result.extend(value) if format == "plain": print(",".join(map(str, result))) elif format == "python": result_str = str(result) print(result_str.replace(" ", "")) else: raise ValueError(f"Unknown format: {format}") if __name__ == "__main__": import argparse parser = argparse.ArgumentParser( description="Get a field from one or more JSON files and print to stdout." ) parser.add_argument( "paths", type=lambda x: x.split(","), help="Comma-separated list of paths to the JSON files to process.", ) parser.add_argument( "--field", type=str, required=True, nargs="+", help="Field to extract from the JSON files. Can be a nested field by providing multiple entries.", ) parser.add_argument( "--format", type=str, default="plain", choices=["plain", "python"], ) args = parser.parse_args() kwargs = vars(args) main(**kwargs)