| import os |
| import json |
| import random |
| from glob import glob |
|
|
| random.seed(42) |
|
|
| json_files = glob(os.path.join(os.path.dirname(__file__), '*.json')) |
|
|
| for file in json_files: |
| base = os.path.basename(file) |
| if base.startswith('split_train_test') or base.endswith('_train.json') or base.endswith('_test.json'): |
| continue |
| with open(file, 'r', encoding='utf-8') as f: |
| try: |
| data = json.load(f) |
| except Exception as e: |
| print(f"Error reading {file}: {e}") |
| continue |
| |
| |
| data_list = data if isinstance(data, list) else list(data.values()) |
| random.shuffle(data_list) |
| |
| |
| test_data = data_list[:5] |
| train_data = data_list[5:] |
| |
| train_file = os.path.splitext(file)[0] + '_train.json' |
| test_file = os.path.splitext(file)[0] + '_test.json' |
| |
| with open(train_file, 'w', encoding='utf-8') as f: |
| json.dump(train_data, f, ensure_ascii=False, indent=2) |
| with open(test_file, 'w', encoding='utf-8') as f: |
| json.dump(test_data, f, ensure_ascii=False, indent=2) |
| print(f"{base} 已分为 {train_file} (训练集: {len(train_data)}条) 和 {test_file} (测试集: {len(test_data)}条)") |