import os import json import glob import argparse def main(): parser = argparse.ArgumentParser() parser.add_argument("--input-dir", type=str, required=True) parser.add_argument("--pattern", type=str, required=True) parser.add_argument("--output-path", type=str, required=True) args = parser.parse_args() input_pattern = os.path.join(args.input_dir, args.pattern) input_paths = sorted(glob.glob(input_pattern)) if not input_paths: raise FileNotFoundError(f"No files matched pattern: {input_pattern}") merged = [] for path in input_paths: with open(path, "r", encoding="utf-8") as f: data = json.load(f) if not isinstance(data, list): raise ValueError(f"{path} is not a JSON list, got {type(data)}") merged.extend(data) output_dir = os.path.dirname(args.output_path) if output_dir: os.makedirs(output_dir, exist_ok=True) with open(args.output_path, "w", encoding="utf-8") as f: json.dump(merged, f, ensure_ascii=False, indent=2) print(f"Merged {len(input_paths)} files into {args.output_path}") print(f"Total items: {len(merged)}") if __name__ == "__main__": main()