mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-08 08:25:09 +00:00
Tools are meant to be handed to an Agent via tools=[...] and invoked by the agent during a task. The previous example called the tool's method directly, which is not how users should use CrewAI tools. Replace with a full agent+task+crew example mirroring the pattern used by sibling tool pages (e.g. seleniumscrapingtool).
81 lines
4.0 KiB
Plaintext
81 lines
4.0 KiB
Plaintext
---
|
|
title: File Write
|
|
description: The `FileWriterTool` is designed to write content to files.
|
|
icon: file-pen
|
|
mode: "wide"
|
|
---
|
|
|
|
# `FileWriterTool`
|
|
|
|
## Description
|
|
|
|
The `FileWriterTool` is a component of the crewai_tools package, designed to simplify the process of writing content to files with cross-platform compatibility (Windows, Linux, macOS).
|
|
It is particularly useful in scenarios such as generating reports, saving logs, creating configuration files, and more.
|
|
This tool handles path differences across operating systems, guards against path-traversal and symlink escapes, and creates parent directories (when a `directory` is explicitly provided) if they don't exist, making it easier to organize your output reliably across different platforms.
|
|
|
|
<Note type="warning">
|
|
The tool writes `content` in **text mode** — it is intended for plain-text files only (`.txt`, `.md`, `.json`, `.yaml`, `.csv`, `.log`, `.py`, config files, generated source, reports, etc.). It is **not** suitable for binary files such as images, PDFs, archives, or executables; writing binary data through it will raise or corrupt the output.
|
|
|
|
No explicit `encoding` is passed to `open()`, so the byte encoding follows `locale.getpreferredencoding()` — UTF-8 on Linux/macOS, but typically cp1252 on stock Windows. Set `PYTHONUTF8=1` (or otherwise configure the locale) if you need guaranteed UTF-8 on Windows.
|
|
</Note>
|
|
|
|
## Installation
|
|
|
|
Install the crewai_tools package to use the `FileWriterTool` in your projects:
|
|
|
|
```shell
|
|
pip install 'crewai[tools]'
|
|
```
|
|
|
|
## Example
|
|
|
|
The `FileWriterTool` is attached to an agent and invoked by that agent during a task — you don't call it yourself. Initialize the tool, hand it to an `Agent` via `tools=[...]`, and let the crew run.
|
|
|
|
```python Code
|
|
from crewai import Agent, Crew, Task, Process
|
|
from crewai_tools import FileWriterTool
|
|
|
|
# Initialize the tool
|
|
file_writer_tool = FileWriterTool()
|
|
|
|
# Define an agent that can write files
|
|
report_writer = Agent(
|
|
role="Report Writer",
|
|
goal="Produce written reports and save them to disk",
|
|
backstory="A meticulous writer who files every report as a .md file.",
|
|
tools=[file_writer_tool],
|
|
)
|
|
|
|
# Task that asks the agent to write a file
|
|
write_task = Task(
|
|
description="Write a short markdown report summarizing the Q3 results to a file named q3_report.md inside the reports directory.",
|
|
expected_output="Confirmation that q3_report.md was written to the reports directory.",
|
|
agent=report_writer,
|
|
)
|
|
|
|
crew = Crew(
|
|
agents=[report_writer],
|
|
tasks=[write_task],
|
|
process=Process.sequential,
|
|
)
|
|
result = crew.kickoff()
|
|
print(result.raw)
|
|
```
|
|
|
|
When the agent decides to write a file, it calls the tool with `filename`, `content`, and optionally `directory` and `overwrite` (see Arguments).
|
|
|
|
## Arguments
|
|
|
|
- `filename`: The name of the file you want to create or overwrite.
|
|
- `content`: The text content to write into the file (string).
|
|
- `directory` (optional): The path to the directory where the file will be created. Defaults to the current directory (`./`). Parent directories are created **only when `directory` is explicitly provided**; the default `./` does not trigger directory creation.
|
|
- `overwrite` (optional, default `False`): Whether to overwrite an existing file. Accepts a bool or a string (`"true"`/`"false"`, `"yes"`/`"no"`, `"1"`/`"0"`, etc.). When `False`, the tool opens in exclusive-create mode (`"x"`) and returns an error if the file already exists; when truthy, it opens in write mode (`"w"`) and replaces the file.
|
|
|
|
## Conclusion
|
|
|
|
By integrating the `FileWriterTool` into your crews, the agents can reliably write content to files across different operating systems.
|
|
This tool is essential for tasks that require saving output data, creating structured file systems, and handling cross-platform file operations.
|
|
It's particularly recommended for Windows users who may encounter file writing issues with standard Python file operations.
|
|
|
|
By adhering to the setup and usage guidelines provided, incorporating this tool into projects is straightforward and ensures consistent file writing behavior across all platforms.
|