文件操作工具¶
文件操作工具提供各种文件内容操作功能,包括读取、写入、搜索和替换。
类概览¶
文件操作工具主要包括以下类:
FileOps- 提供核心文件操作功能,专为 LLM 代理集成设计
使用方法¶
基本使用¶
from toolregistry_hub import FileOps
# Read file
content = FileOps.read_file("path/to/file.txt")
print(content)
# Write file
FileOps.write_file("path/to/new_file.txt", "Hello, World!")
# Append content to file
FileOps.append_file("path/to/file.txt", "\nNew line appended.")
# Search files
results = FileOps.search_files("src", "class.*Search", "*.py")
for result in results:
print(f"File: {result['file']}")
print(f"Line number: {result['line_num']}")
print(f"Line: {result['line']}")
print(f"Context: {result['context']}")
详细 API¶
FileOps 类¶
FileOps 是一个提供核心文件操作功能的类,专为 LLM 代理集成设计。
方法¶
edit(path: str, old_string: str, new_string: str, replace_all: bool = False, start_line: int | None = None) -> str: 精确字符串替换。返回 unified diff 格式的变更内容。支持replace_all批量替换和start_line多匹配消歧。search_files(path: str, regex: str, file_pattern: str = "*") -> List[dict]: 在文件中搜索匹配正则表达式的内容,返回包含 file, line_num, line, context 键的字典列表read_file(path: str) -> str: 读取文件内容write_file(path: str, content: str) -> None: 写入内容到文件append_file(path: str, content: str) -> None: 追加内容到文件make_diff(ours: str, theirs: str) -> str: 创建两个字符串之间的差异make_git_conflict(ours: str, theirs: str) -> str: 创建 Git 风格的冲突标记
示例¶
读写文件¶
from toolregistry_hub import FileOps
# Read file
content = FileOps.read_file("example.txt")
print(f"Original content:\n{content}")
# 输出: Original content:
# Hello, World!
# Write file
FileOps.write_file("new_file.txt", "This is the content of a new file.")
# Append content to file
FileOps.append_file("example.txt", "\nThis is appended content.")
# Read file again to see changes
updated_content = FileOps.read_file("example.txt")
print(f"Updated content:\n{updated_content}")
# 输出: Updated content:
# Hello, World!
# This is appended content.
搜索文件¶
from toolregistry_hub import FileOps
# Search for class definitions in Python files
results = FileOps.search_files("src", r"class\s+\w+", "*.py")
print(f"Found {len(results)} matches:")
for result in results:
print(f"File: {result['file']}")
print(f"Line number: {result['line_num']}")
print(f"Line: {result['line']}")
print(f"Context: {result['context']}")
print("-" * 50)
# 输出示例:
# Found 2 matches:
# File: /tmp/test1.py
# Line number: 1
# Line: class MyClass:
# Context: [(2, ' def __init__(self):'), (3, ' pass')]
# --------------------------------------------------
# Search for specific string
results = FileOps.search_files(".", "TODO", "*")
print(f"Found {len(results)} TODO items:")
for result in results:
print(f"File: {result['file']}")
print(f"Line number: {result['line_num']}")
print(f"Line: {result['line']}")
print("-" * 50)
编辑文件¶
from toolregistry_hub import FileOps
# 单次匹配替换
diff = FileOps.edit("example.py", "def hello():", "def hello_world():")
print(diff) # 显示 unified diff 格式的变更
# 替换所有匹配
FileOps.edit("example.py", "TODO", "DONE", replace_all=True)
# 多匹配时使用 start_line 消歧,选择最接近第 42 行的匹配
FileOps.edit("example.py", "return result", "return modified", start_line=42)