/
distorm
/
netology_Homework
Обзор
Документация
Войти
/
distorm
/
netology_Homework
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task_3.py
80 строк
3 KB
oreshnikov
task_3_update
19 фев 2026, 19:22
19 фев 2026, 19:22
41a00dc
Код
Авторство
О чём код?
""" Домашнее задание к лекции «Открытие и чтение файла, запись в файл» - Необходимо объединить их в один по следующим правилам: - Содержимое исходных файлов в результирующем файле должно быть отсортировано по количеству строк в них (то есть первым нужно записать файл с наименьшим количеством строк, а последним - с наибольшим) - Содержимое файла должно предваряться служебной информацией на 2-х строках: имя файла и количество строк в нем """ import os import pprint as printer def get_file_info(filename): # Формируем полный путь к файлу в папке files full_path = os.path.join('files', filename) with open(full_path, 'r', encoding='utf-8') as file: lines = file.readlines() num_lines = len(lines) content = ''.join(lines) return (filename, num_lines, content) def get_sort_key(file_info): return file_info[1] def write_combined_file(sorted_files, output_filename): with open(output_filename, 'w', encoding='utf-8') as result_file: for info in sorted_files: filename = info[0] num_lines = info[1] content = info[2] result_file.write(f"{filename}\n") result_file.write(f"{num_lines}\n") result_file.write(content) def process_files(): # Проверяем существование папки files if not os.path.exists('files') or not os.path.isdir('files'): print("Папка 'files' не найдена в текущей директории.") return # Получаем список всех .txt файлов в папке files, кроме результирующего input_files = [f for f in os.listdir('files') if f.endswith('.txt') and f != 'result.txt'] # Проверяем, есть ли файлы для обработки if not input_files: print("В папке 'files' не найдено текстовых файлов для обработки.") return files_info = [] for filename in input_files: try: file_info = get_file_info(filename) files_info.append(file_info) except Exception as e: print(f"Ошибка при обработке файла {filename}: {e}") # Используем printer.pprint для отладочного вывода информации о файлах print("Информация о файлах до сортировки:") printer.pprint(files_info) sorted_files = sorted(files_info, key=get_sort_key) print("\nИнформация о файлах после сортировки:") printer.pprint(sorted_files) output_file = 'result_task_3.txt' write_combined_file(sorted_files, output_file) print(f"\nФайлы успешно объединены в {output_file}") if __name__ == "__main__": process_files()