Concatenate a directory full of files into a single prompt for use with LLMs
Project description
files-to-prompt
Concatenate a directory full of files into a single prompt for use with LLMs
For background on this project see Building files-to-prompt entirely using Claude 3 Opus.
Installation
Install this tool using pip
:
pip install files-to-prompt
Usage
To use files-to-prompt
, provide the path to one or more files or directories you want to process:
files-to-prompt path/to/file_or_directory [path/to/another/file_or_directory ...]
This will output the contents of every file, with each file preceded by its relative path and separated by ---
.
Options
-
-e/--extension <extension>
: Only include files with the specified extension. Can be used multiple times.files-to-prompt path/to/directory -e txt -e md
-
--include-hidden
: Include files and folders starting with.
(hidden files and directories).files-to-prompt path/to/directory --include-hidden
-
--ignore-gitignore
: Ignore.gitignore
files and include all files.files-to-prompt path/to/directory --ignore-gitignore
-
--ignore <pattern>
: Specify one or more patterns to ignore. Can be used multiple times.files-to-prompt path/to/directory --ignore "*.log" --ignore "temp*"
-
c/--cxml
: Output in Claude XML format.files-to-prompt path/to/directory --cxml
-
-o/--output <file>
: Write the output to a file instead of printing it to the console.files-to-prompt path/to/directory -o output.txt
Example
Suppose you have a directory structure like this:
my_directory/
├── file1.txt
├── file2.txt
├── .hidden_file.txt
├── temp.log
└── subdirectory/
└── file3.txt
Running files-to-prompt my_directory
will output:
my_directory/file1.txt
---
Contents of file1.txt
---
my_directory/file2.txt
---
Contents of file2.txt
---
my_directory/subdirectory/file3.txt
---
Contents of file3.txt
---
If you run files-to-prompt my_directory --include-hidden
, the output will also include .hidden_file.txt
:
my_directory/.hidden_file.txt
---
Contents of .hidden_file.txt
---
...
If you run files-to-prompt my_directory --ignore "*.log"
, the output will exclude temp.log
:
my_directory/file1.txt
---
Contents of file1.txt
---
my_directory/file2.txt
---
Contents of file2.txt
---
my_directory/subdirectory/file3.txt
---
Contents of file3.txt
---
Claude XML Output
Anthropic has provided specific guidelines for optimally structuring prompts to take advantage of Claude's extended context window.
To structure the output in this way, use the optional --cxml
flag, which will produce output like this:
<documents>
<document index="1">
<source>my_directory/file1.txt</source>
<document_content>
Contents of file1.txt
</document_content>
</document>
<document index="2">
<source>my_directory/file2.txt</source>
<document_content>
Contents of file2.txt
</document_content>
</document>
</documents>
Development
To contribute to this tool, first checkout the code. Then create a new virtual environment:
cd files-to-prompt
python -m venv venv
source venv/bin/activate
Now install the dependencies and test dependencies:
pip install -e '.[test]'
To run the tests:
pytest
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file files_to_prompt-0.4.tar.gz
.
File metadata
- Download URL: files_to_prompt-0.4.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa1c65bdb7fa123a3a36c5f105af34aa8f3f70495fc90dcb5f7fa995fda3463d |
|
MD5 | 0e1c080eeb7f6b2c520cfb87681bed6f |
|
BLAKE2b-256 | 4701ae9d0081f74df8de4149de31db4acdc864822dc2dec026b43c8facf7876b |
File details
Details for the file files_to_prompt-0.4-py3-none-any.whl
.
File metadata
- Download URL: files_to_prompt-0.4-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 81a3746dfd976b8b76a69ddf8c01c4cfafa7a01d1d5069e9f2dbb8a98b6aca9b |
|
MD5 | bd3c49e486aea5178280469ac85e5c5a |
|
BLAKE2b-256 | fb30923fa6daf3f50e6ed2d4762a4769b804c66a8afdfe20f366d83d070b594c |