|
import os |
|
from tqdm import tqdm |
|
|
|
|
|
def call_parse_prompt(): |
|
""" |
|
Locates the prompts_raw directory and generates an __init__.py file containing prompt texts. |
|
|
|
Searches for prompts_raw directory in current and parent directories. Once found, calls |
|
create_python_file_with_texts() to generate the __init__.py file. |
|
""" |
|
current_file_path = os.path.abspath(__file__) |
|
current_folder_path = os.path.dirname(current_file_path) |
|
folder_path = os.path.join(current_folder_path, "prompts_raw") |
|
|
|
|
|
if not os.path.exists(folder_path): |
|
parent_dir = current_folder_path |
|
while parent_dir != os.path.dirname(parent_dir): |
|
parent_dir = os.path.dirname(parent_dir) |
|
test_path = os.path.join(parent_dir, "prompts_raw") |
|
if os.path.exists(test_path): |
|
folder_path = test_path |
|
break |
|
|
|
output_file = os.path.join(folder_path, "__init__.py") |
|
create_python_file_with_texts(folder_path, output_file) |
|
|
|
|
|
def create_python_file_with_texts(folder_path, output_file): |
|
""" |
|
Creates a Python file containing prompt texts from .txt files. |
|
|
|
Args: |
|
folder_path (str): Path to directory containing prompt .txt files |
|
output_file (str): Path where the output __init__.py file will be created |
|
|
|
The function reads all .txt files in the given folder, converts their contents into |
|
Python variables, and writes them to the output file. Variable names are derived from |
|
file paths with special characters replaced. |
|
""" |
|
with open(output_file, 'w', encoding='utf-8') as out_file: |
|
out_file.write("# This file is generated automatically through parse_prompt.py\n\n") |
|
txt_files = [file for root, dirs, files in os.walk(folder_path) for file in files if file.endswith(".txt")] |
|
for file in tqdm(txt_files, desc="Processing files"): |
|
file_path = os.path.join(folder_path, file) |
|
var_name = "_" + file_path.replace(folder_path, "").replace(os.sep, "_").replace(".txt", "").strip("_") |
|
with open(file_path, 'r', encoding='utf-8') as f: |
|
content = f.read().replace('"""', '\"\"\"') |
|
out_file.write(f'{var_name} = """{content}"""\n\n') |
|
|
|
|
|
if __name__ == "__main__": |
|
call_parse_prompt() |