/
F1lya
/
Modal_Window
Обзор
Документация
Войти
/
F1lya
/
Modal_Window
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
file_generator.py
143 строки
5 KB
F1lya
upload files
20 окт 2025, 14:14
20 окт 2025, 14:14
0a186d7
Код
Авторство
О чём код?
import os import re from pathlib import Path def parse_code_file(input_file_path): """ Парсит текстовый файл с кодом и создает соответствующие файлы в каталогах """ try: with open(input_file_path, 'r', encoding='utf-8') as file: content = file.read() # Регулярное выражение для поиска блоков кода # Формат: "номер. путь/файл.расширение\nязык\nкод" pattern = r'(\d+)\.\s+([^\n]+)\n([a-zA-Z]+)\n(.*?)(?=\n\d+\.|\Z)' matches = re.findall(pattern, content, re.DOTALL) created_files = [] for match in matches: file_number = match[0] # номер файла (не используем) file_path = match[1] # путь к файлу language = match[2] # язык программирования code_content = match[3] # содержимое файла # Очистка кода от лишних пробелов в начале и конце code_content = code_content.strip() # Создание директорий, если они не существуют directory = os.path.dirname(file_path) if directory: os.makedirs(directory, exist_ok=True) # Запись кода в файл with open(file_path, 'w', encoding='utf-8') as output_file: output_file.write(code_content) created_files.append(file_path) print(f"✓ Создан файл: {file_path} ({language})") return created_files except Exception as e: print(f"Ошибка при обработке файла: {e}") return [] def main(): """ Основная функция для запуска скрипта """ input_file = input("Введите путь к файлу с кодом (например: code.txt): ").strip() if not os.path.exists(input_file): print("Файл не найден!") return print("Начинаю обработку файла...") created_files = parse_code_file(input_file) print(f"\nГотово! Создано файлов: {len(created_files)}") print("Список созданных файлов:") for file_path in created_files: print(f" - {file_path}") # Альтернативная версия с обработкой конкретного формата из вашего примера def parse_specific_format(input_file_path): """ Альтернативная версия для точного формата из примера """ try: with open(input_file_path, 'r', encoding='utf-8') as file: lines = file.readlines() created_files = [] i = 0 while i < len(lines): line = lines[i].strip() # Ищем строки с форматом "номер. путь" if re.match(r'^\d+\.\s+[^\s]+\.\w+$', line): # Извлекаем путь к файлу (убираем номер и точку) file_path = re.sub(r'^\d+\.\s+', '', line) # Следующая строка - язык программирования i += 1 if i < len(lines): language = lines[i].strip() # Собираем код до следующего файла или конца i += 1 code_lines = [] while i < len(lines) and not re.match(r'^\d+\.\s+[^\s]+\.\w+$', lines[i]): code_lines.append(lines[i]) i += 1 # Объединяем код и убираем лишние пустые строки code_content = ''.join(code_lines).strip() # Создаем директории и файл directory = os.path.dirname(file_path) if directory: os.makedirs(directory, exist_ok=True) with open(file_path, 'w', encoding='utf-8') as output_file: output_file.write(code_content) created_files.append(file_path) print(f"✓ Создан файл: {file_path} ({language})") else: i += 1 return created_files except Exception as e: print(f"Ошибка при обработке файла: {e}") return [] if __name__ == "__main__": print("=== Генератор файлов из текстового описания ===") print("Выберите режим:") print("1 - Автоматическое определение (рекомендуется)") print("2 - Специфический формат") choice = input("Ваш выбор (1 или 2): ").strip() input_file = input("Введите путь к файлу с кодом: ").strip() if not os.path.exists(input_file): print("Файл не найден!") exit(1) if choice == "2": created_files = parse_specific_format(input_file) else: created_files = parse_code_file(input_file) print(f"\n✅ Обработка завершена! Создано файлов: {len(created_files)}")