File Splitting

L3
ModelContextProtocolFilesystemFile Context

Split a large text file into multiple equal-length segments for easier processing, distribution, and parallel handling of content.

Created by Lingjun Chen
2025-08-08
Content Transformation

Model Ranking

Click on the dots to view the trajectory of each task run
Model
Run Results
Pass@4
Pass^4
Avg Time
Avg Turns
Input Tokens
Output Tokens
Total Tokens
OpenAI
gpt-5-high
4
/4
1241.1s
12.3
45,974
59,931
105,904
OpenAI
gpt-5-low
3
/4
711.0s
20.0
101,274
47,303
148,577
OpenAI
gpt-5-medium
3
/4
652.0s
12.3
45,131
36,864
81,994
OpenAI
gpt-5-mini-medium
1
/4
211.9s
13.3
41,442
21,602
63,044
Claude
claude-opus-4-1
0
/1
--
183.6s
18.0
77,149
3,075
80,224
Claude
claude-sonnet-4
0
/4
161.8s
17.5
73,073
2,674
75,747
Claude
claude-sonnet-4-high
0
/4
114.3s
28.5
200,160
4,111
204,270
Claude
claude-sonnet-4-low
0
/4
143.2s
34.8
338,216
4,968
343,184
DeepSeek
deepseek-chat
0
/4
200.4s
16.8
64,801
2,516
67,317
Gemini
gemini-2-5-flash
0
/4
20.8s
5.8
11,791
2,160
13,951
Gemini
gemini-2-5-pro
0
/4
88.0s
19.8
62,972
4,762
67,733
Z.ai
glm-4-5
0
/4
280.0s
33.8
314,764
9,675
324,438
OpenAI
gpt-4-1
0
/4
10.3s
2.0
2,716
159
2,875
OpenAI
gpt-4-1-mini
0
/4
21.0s
7.5
15,307
695
16,002
OpenAI
gpt-4-1-nano
0
/4
8.9s
2.8
3,960
125
4,085
OpenAI
gpt-5-mini-high
0
/4
493.4s
17.8
59,186
64,365
123,550
OpenAI
gpt-5-mini-low
0
/4
196.3s
3.3
3,795
4,092
7,886
OpenAI
gpt-5-nano-high
0
/4
358.3s
12.0
45,351
78,467
123,817
OpenAI
gpt-5-nano-low
0
/4
97.6s
7.0
13,141
21,319
34,460
OpenAI
gpt-5-nano-medium
0
/4
123.7s
7.0
14,875
22,055
36,929
OpenAI
gpt-oss-120b
0
/4
29.3s
6.5
15,299
2,581
17,881
Grok
grok-4
0
/4
494.5s
10.3
114,727
25,697
140,423
Grok
grok-code-fast-1
0
/4
394.6s
14.3
153,226
1,427
171,914
MoonshotAI
kimi-k2-0711
0
/4
331.2s
42.5
571,637
8,622
580,258
MoonshotAI
kimi-k2-0905
0
/4
1261.8s
72.8
1,133,015
16,002
1,149,017
OpenAI
o3
0
/4
1478.2s
36.0
203,437
123,497
326,934
OpenAI
o4-mini
0
/4
762.1s
13.3
31,005
35,657
66,662
Qwen
qwen-3-coder-plus
0
/4
141.7s
64.5
1,013,875
5,659
1,019,534
Qwen
qwen-3-max
0
/4
19.1s
7.0
19,465
603
20,068

Task State

Task Initial State Files
Download ZIP package to view the complete file structure
file_context/ ├── file_01.txt ├── file_02.txt ├── file_03.txt ├── file_04.txt ├── file_05.txt ├── file_06.txt ├── file_07.txt ├── file_08.txt ├── file_09.txt ├── file_10.txt ├── file_11.txt ├── file_12.txt ├── file_13.txt ├── file_14.txt ├── file_15.txt ├── file_16.txt ├── file_17.txt ├── file_18.txt ├── file_19.txt ├── file_20.txt └── large_file.txt

Instruction

Please use FileSystem tools to finish the following task:

Task Description

You need to split a large text file into multiple smaller files with equal character counts. The task involves creating a new directory and splitting the content into exactly 10 files.

Task Objectives

  1. Create a new directory named split in the test directory
  2. Split the file large_file.txt into exactly 10 files with equal character counts
  3. Name the files as split_01.txt, split_02.txt, ..., split_10.txt in the split directory


Verify

*.py
Python
#!/usr/bin/env python3
"""
Verification script for File Splitting Task
"""

import sys
from pathlib import Path
import os

def get_test_directory() -> Path:
    """Get the test directory from FILESYSTEM_TEST_DIR env var."""
    test_root = os.environ.get("FILESYSTEM_TEST_DIR")
    if not test_root:
        raise ValueError("FILESYSTEM_TEST_DIR environment variable is required")
    return Path(test_root)

def verify_split_directory_exists(test_dir: Path) -> bool:
    """Verify that the split directory exists."""
    split_dir = test_dir / "split"
    
    if not split_dir.exists():
        print("❌ Directory 'split' not found")
        return False
    
    if not split_dir.is_dir():
        print("❌ 'split' exists but is not a directory")
        return False
    
    print("✅ Split directory found")
    return True

def verify_all_split_files_exist(test_dir: Path) -> bool:
    """Verify that all 10 split files exist with correct names."""
    split_dir = test_dir / "split"
    
    expected_files = [f"split_{i:02d}.txt" for i in range(1, 11)]
    missing_files = []
    
    for filename in expected_files:
        file_path = split_dir / filename
        if not file_path.exists():
            missing_files.append(filename)
    
    if missing_files:
        print(f"❌ Missing files: {missing_files}")
        return False
    
    print("✅ All 10 split files exist with correct names")
    return True

def verify_equal_file_lengths(test_dir: Path) -> bool:
    """Verify that all split files have equal character counts."""
    split_dir = test_dir / "split"
    
    file_lengths = []
    for i in range(1, 11):
        filename = f"split_{i:02d}.txt"
        file_path = split_dir / filename
        
        try:
            content = file_path.read_text()
            file_lengths.append(len(content))
        except Exception as e:
            print(f"❌ Error reading {filename}: {e}")
            return False
    
    # Check if all lengths are equal
    if len(set(file_lengths)) != 1:
        print(f"❌ File lengths are not equal: {file_lengths}")
        return False
    
    print(f"✅ All files have equal length: {file_lengths[0]} characters")
    return True

def verify_content_integrity(test_dir: Path) -> bool:
    """Verify that concatenated split files equal the original file."""
    split_dir = test_dir / "split"
    original_file = test_dir / "large_file.txt"
    
    # Read original content
    try:
        original_content = original_file.read_text()
    except Exception as e:
        print(f"❌ Error reading original file: {e}")
        return False
    
    # Concatenate all split files
    concatenated_content = ""
    for i in range(1, 11):
        filename = f"split_{i:02d}.txt"
        file_path = split_dir / filename
        
        try:
            content = file_path.read_text()
            concatenated_content += content
        except Exception as e:
            print(f"❌ Error reading {filename}: {e}")
            return False
    
    # Compare content
    if concatenated_content != original_content:
        print("❌ Concatenated content does not match original file")
        print(f"   Original length: {len(original_content)}")
        print(f"   Concatenated length: {len(concatenated_content)}")
        return False
    
    print("✅ Concatenated content matches original file exactly")
    return True

def verify_no_extra_files(test_dir: Path) -> bool:
    """Verify that no extra files exist in the split directory."""
    split_dir = test_dir / "split"
    
    expected_files = {f"split_{i:02d}.txt" for i in range(1, 11)}
    actual_files = {f.name for f in split_dir.iterdir() if f.is_file()}
    
    extra_files = actual_files - expected_files
    if extra_files:
        print(f"❌ Extra files found in split directory: {extra_files}")
        return False
    
    print("✅ No extra files in split directory")
    return True

def main():
    """Main verification function."""
    test_dir = get_test_directory()
    print("🔍 Verifying File Splitting Task...")
    
    # Define verification steps
    verification_steps = [
        ("Split Directory Exists", verify_split_directory_exists),
        ("All Split Files Exist", verify_all_split_files_exist),
        ("Equal File Lengths", verify_equal_file_lengths),
        ("Content Integrity", verify_content_integrity),
        ("No Extra Files", verify_no_extra_files),
    ]
    
    # Run all verification steps
    all_passed = True
    for step_name, verify_func in verification_steps:
        print(f"\n--- {step_name} ---")
        if not verify_func(test_dir):
            all_passed = False
    
    # Final result
    print("\n" + "="*50)
    if all_passed:
        print("✅ File splitting task completed correctly!")
        print("🎉 Task verification: PASS")
        sys.exit(0)
    else:
        print("❌ Task verification: FAIL")
        sys.exit(1)

if __name__ == "__main__":
    main()