/
djek
/
app_notes
Обзор
Документация
Войти
/
djek
/
app_notes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.py
214 строк
10 KB
djek
Завершено и протестировано
11 фев 2026, 10:03
11 фев 2026, 10:03
9bc79dd
Код
Авторство
О чём код?
import os def build_note(note_name, note_text): """ Создает текстовый файл с указанным именем и содержимым. Аргументы: note_name (str): название заметки (будет использовано как имя файла) note_text (str): текст заметки """ try: with open(f"{note_name}.txt", 'w', encoding='utf-8') as file: file.write(note_text) print(f"Заметка '{note_name}' успешно создана.") except Exception as e: print(f"Ошибка при создании заметки: {e}") def create_note(): """ Запрашивает у пользователя название и текст заметки, а затем создает заметку. """ try: note_name = input("Введите название заметки: ").strip() if not note_name: print("Название заметки не может быть пустым.") return note_text = input("Введите текст заметки: ").strip() if not note_text: print("Текст заметки не может быть пустым.") return build_note(note_name, note_text) except Exception as e: print(f"Ошибка при создании заметки: {e}") def read_note(): """ Запрашивает у пользователя название заметки и выводит её содержимое. Если файл с таким названием существует, функция считывает и выводит его содержимое. Если файла не существует, выводит сообщение о том, что заметка не найдена. """ try: note_name = input("Введите название заметки для просмотра: ").strip() if not note_name: print("Название заметки не может быть пустым.") return file_path = f"{note_name}.txt" if os.path.isfile(file_path): with open(file_path, 'r', encoding='utf-8') as file: content = file.read() print(f"\n--- Заметка: {note_name} ---\n{content}\n") else: print(f"Заметка '{note_name}' не найдена.") except Exception as e: print(f"Ошибка при чтении заметки: {e}") def edit_note(): """ Запрашивает у пользователя название заметки. Если файл с таким названием существует, функция считывает и выводит содержимое файла, запрашивает у пользователя новый текст заметки и обновляет содержимое файла. Если файла не существует, выводит сообщение, что заметка не найдена. """ try: note_name = input("Введите название заметки для редактирования: ").strip() if not note_name: print("Название заметки не может быть пустым.") return file_path = f"{note_name}.txt" if os.path.isfile(file_path): with open(file_path, 'r', encoding='utf-8') as file: content = file.read() print(f"Текущее содержимое заметки '{note_name}':\n{content}") new_text = input("Введите новый текст заметки: ").strip() if not new_text: print("Текст заметки не может быть пустым.") return with open(file_path, 'w', encoding='utf-8') as file: file.write(new_text) print(f"Заметка '{note_name}' успешно обновлена.") else: print(f"Заметка '{note_name}' не найдена.") except Exception as e: print(f"Ошибка при редактировании заметки: {e}") def delete_note(): """ Запрашивает у пользователя название заметки. Если файл с таким названием существует, функция удаляет файл. Если файла не существует, выводит сообщение, что заметка не найдена. """ try: note_name = input("Введите название заметки для удаления: ").strip() if not note_name: print("Название заметки не может быть пустым.") return file_path = f"{note_name}.txt" if os.path.isfile(file_path): os.remove(file_path) print(f"Заметка '{note_name}' успешно удалена.") else: print(f"Заметка '{note_name}' не найдена.") except Exception as e: print(f"Ошибка при удалении заметки: {e}") def display_notes(): """ Выводит все заметки пользователя в порядке от самой короткой до самой длинной. """ try: # Получаем список всех txt файлов в текущей директории note_files = [f for f in os.listdir('.') if f.endswith('.txt')] if not note_files: print("У вас пока нет заметок.") return # Создаем список кортежей (название_файла, длина_содержимого) notes_with_length = [] for note_file in note_files: with open(note_file, 'r', encoding='utf-8') as file: content = file.read() notes_with_length.append((note_file, len(content))) # Сортируем по длине содержимого (второй элемент кортежа) sorted_notes = sorted(notes_with_length, key=lambda x: x[1]) print("\n=== Все заметки (от самой короткой до самой длинной) ===") for note_file, length in sorted_notes: # Убираем расширение .txt из названия файла note_name = note_file[:-4] with open(note_file, 'r', encoding='utf-8') as file: content = file.read() print(f"\n--- Заметка: {note_name} (длина: {length} символов) ---\n{content}") except Exception as e: print(f"Ошибка при выводе заметок: {e}") def display_sorted_notes(): """ Выводит все заметки пользователя в порядке от самой длинной до самой короткой. """ try: # Получаем список всех txt файлов в текущей директории note_files = [f for f in os.listdir('.') if f.endswith('.txt')] if not note_files: print("У вас пока нет заметок.") return # Создаем список кортежей (название_файла, длина_содержимого) notes_with_length = [] for note_file in note_files: with open(note_file, 'r', encoding='utf-8') as file: content = file.read() notes_with_length.append((note_file, len(content))) # Сортируем по длине содержимого в обратном порядке (от самой длинной к самой короткой) sorted_notes = sorted(notes_with_length, key=lambda x: x[1], reverse=True) print("\n=== Все заметки (от самой длинной до самой короткой) ===") for note_file, length in sorted_notes: # Убираем расширение .txt из названия файла note_name = note_file[:-4] with open(note_file, 'r', encoding='utf-8') as file: content = file.read() print(f"\n--- Заметка: {note_name} (длина: {length} символов) ---\n{content}") except Exception as e: print(f"Ошибка при выводе заметок: {e}") def main(): """ Основная функция приложения. Управляет работой программы и отображает меню. """ while True: print("\n=== Приложение для заметок ===") print("1. Создать заметку") print("2. Прочитать заметку") print("3. Редактировать заметку") print("4. Удалить заметку") print("5. Вывести все заметки (по возрастанию длины)") print("6. Вывести все заметки (по убыванию длины)") print("7. Выйти") choice = input("\nВыберите действие (1-7): ").strip() if choice == "1": create_note() elif choice == "2": read_note() elif choice == "3": edit_note() elif choice == "4": delete_note() elif choice == "5": display_notes() elif choice == "6": display_sorted_notes() elif choice == "7": print("До свидания!") break else: print("Неверный выбор. Пожалуйста, введите число от 1 до 7.") if __name__ == "__main__": main()