add feature to fomrat note and save top local directory

This commit is contained in:
=
2025-04-26 12:16:44 +08:00
parent edfb1416ab
commit 594af0ade7
9 changed files with 237 additions and 35 deletions

2
bot_util/__init__.py Normal file
View File

@ -0,0 +1,2 @@
from .file_util import write_file, write_file_batch
__all__ = ['write_file', 'write_file_batch']

48
bot_util/file_util.py Normal file
View File

@ -0,0 +1,48 @@
import os
from pathlib import Path
def write_file(file_path: str, content: str) -> str:
"""
Write content to a file, creating directories if they do not exist.
If the file already exists, it will be overwritten.
:param file_path: Path to the file to write to.
:param content: Content to write to the file.
:return: True if the file was written successfully, False otherwise.
"""
# Check if the file path is absolute, if not, append to project root
if not os.path.isabs(file_path):
file_path = os.path.join(Path(__file__).resolve().parent.parent, file_path)
dir_path = os.path.dirname(file_path)
print(f"{dir_path}")
# Create the directory if it doesn't exist
if not os.path.exists(dir_path):
try:
os.makedirs(dir_path)
except OSError as e:
print(f"Error creating directory {dir_path}: {e}")
return "Error creating directory, files not written"
try:
with open(file_path, 'w') as f:
f.write(content)
return "file written successfully"
except IOError as e:
print(f"Error writing to file {file_path}: {e}")
return f"Error writing to file {file_path}: {e}"
def write_file_batch(file_paths: list[str], contents: list[str]) -> list[bool]:
"""
Write multiple files in batch.
:param file_paths: List of file paths to write to.
:param contents: List of contents to write to the files.
:return: List of booleans indicating success or failure for each file.
"""
results = []
for file_path, content in zip(file_paths, contents):
result = write_file(file_path, content)
results.append(result)
return results
if __name__ == "__main__":
write_file(Path("test_data/output/test.txt"), "test")