Простые приложения на Python
Простые приложения на Python
Python — это язык программирования высокого уровня, который сочетает в себе простоту синтаксиса и мощные возможности для решения широкого спектра задач. Язык ориентирован на читаемость кода и продуктивность разработчика. Стандартная библиотека Python включает множество модулей для работы с файлами, сетью, данными и операционной системой, что позволяет создавать функциональные утилиты без подключения внешних зависимостей.
Как запускать примеры из главы
- Сохраните код раздела в файл
.py(имя — в Как запустить). - В терминале:
cdв каталог с файлом. - Запустите:
python имя_файла.py(илиpython3, если так настроена система).
python имя_файла.py
Проверка: python --version (рекомендуется Python 3.10+).
python --version
Убедиться, что интерпретатор не только найден, но и выполняет код:
python -c "print('ok')"
В выводе должно быть ok (на части систем — python3 или py вместо python).
Генератор паролей
Это приложение демонстрирует работу со строками, списками символов и генерацией случайных значений. Модуль random предоставляет инструменты для выбора элементов из коллекций.
Как запустить
- Файл:
password.py - Команда:
python password.py
python password.py
- Нужно: stdlib (
random,string). - Результат: запрос длины пароля, затем строка
Сгенерированный пароль: ....
Код ITЗагрузка примера кода…
Разбор:
- Модули:
stringсодержит предопределенные константы с буквами алфавита и цифрами.randomотвечает за выбор случайных элементов. - Конкатенация строк: Оператор
+объединяет строки в единый источник символов. - Генератор списков (Comprehension): Выражение
(random.choice(...) for _ in range(...))создает последовательность случайных символов. - Метод join: Строка
"".join(...)собирает элементы списка в итоговую строку без разделителей.
Сортировщик текстового файла
Пример иллюстрирует чтение данных из файла, обработку строк в памяти и запись результата обратно в файл. Работа со списками позволяет упорядочивать данные.
Как запустить
- Файл:
sort_file.py - Подготовка:
input.txt - Команда:
python sort_file.py
python sort_file.py
- Результат:
output_sorted.txt
Код ITЗагрузка примера кода…
Разбор:
- Контекстный менеджер (
with): Гарантирует автоматическое закрытие файлов после завершения блока кода, даже при возникновении ошибок. - Обработка кодировки: Параметр
encoding='utf-8'обеспечивает корректную работу с русским языком. - Метод strip: Удаляет пробелы и символы перевода строки по краям каждой строки.
- Функция sorted: Возвращает новый отсортированный список, не изменяя исходный.
Консольный калькулятор
Пример показывает базовый ввод данных пользователем, условную логику и обработку исключений при делении на ноль или неверном вводе.
Код ITЗагрузка примера кода…
Разбор:
- Бесконечный цикл (
while True): Позволяет программе работать до явной команды выхода. - Условная логика (
if/elif/else): Выбирает нужную математическую операцию. - Обработка исключений (
try/except): Перехватывает ошибки преобразования текста в число (ValueError). - Типизация: Функция
float()преобразует строковый ввод в вещественное число.
Трекер задач в JSON
Этот пример демонстрирует сериализацию (преобразование объектов в строку) и десериализацию (восстановление объектов из строки), а также работу с форматом JSON.
Код ITЗагрузка примера кода…
Разбор:
- Модуль
json: Функцияjson.dumpсохраняет объект в файл как строку JSON. Функцияjson.loadчитает файл и преобразует его обратно в словарь или список. - Параметр
ensure_ascii=False: Сохраняет кириллицу в файле как есть, а не в виде экранированных последовательностей. - Структура данных: Задачи хранятся в списке словарей, где каждый словарь описывает одну задачу.
- Проверка существования файла: Функция
os.path.existsпредотвращает ошибку чтения несуществующего файла.
Простой мессенджер
Клиент с графическим интерфейсом собран на Tkinter. Базовые виджеты, pack/grid и mainloop — в Первая программа на Tkinter и галерее примеров; здесь — связка GUI с сетью и потоками.
Клиент
Создайте файл client_gui.py:
Код ITЗагрузка примера кода…
Разбор:
- Класс
ChatClientGUIобъединяет сеть и интерфейс: хранит сокет, состояние подключения и виджеты окна. - Метод
setup_ui()собирает структуру GUI (верхняя панель, чат, поле ввода, кнопки, меню), а не смешивает это с сетевой логикой. connect_to_server()выполняет handshake: подключается к серверу, отправляет ник и включает элементы ввода после успешного соединения.- Для фонового получения сообщений запускается отдельный поток
threading.Thread(..., daemon=True), чтобы интерфейс не "замерзал". receive_messages()постоянно читает сокет, различает системные и пользовательские сообщения, и отправляет их вadd_message()для форматированного вывода.- Методы
disconnect(),reconnect()иon_closing()аккуратно закрывают соединение и освобождают ресурсы, предотвращая зависшие сокеты.
Больше примеров окон, меню и диалогов без сетевой логики — Tkinter — окна и виджеты.
Сервер
Создайте файл server.py:
Код ITЗагрузка примера кода…
Разбор:
- Класс
ChatServerсоздаёт TCP-сервер и хранит активные подключения в спискахclientsиnicknames. start()открывает порт, принимает новых клиентов и запускает отдельный потокhandle_clientдля каждого соединения.- При подключении сервер запрашивает ник (
"NICK"), сохраняет клиента и рассылает сообщение о входе черезbroadcast(...). broadcast()централизует рассылку: одна функция отправляет сообщение всем участникам чата.handle_client()в цикле принимает сообщения и публикует их в общий чат, а при обрыве соединения удаляет клиента.remove_client()синхронно очищает структуры, закрывает сокет и уведомляет остальных пользователей о выходе участника.
Запуск
Сначала запустите сервер:
python server.py
Затем запустите два клиента:
python client_gui.py
В появившемся окне введите никнейм, и пользуйтесь чатом.
Простой HTTP-сервер и клиент
Python позволяет быстро развернуть веб-сервер и отправить запрос к нему, используя стандартные библиотеки.
Сервер
Код ITЗагрузка примера кода…
Клиент
Код ITЗагрузка примера кода…
Разбор:
BaseHTTPRequestHandler: Базовый класс для обработки HTTP-запросов. Методdo_GETреагирует на запросы типа GET.send_response,send_header,end_headers: Последовательность методов для формирования заголовков ответа.urllib.request: Библиотека для выполнения HTTP-запросов. Функцияurlopenоткрывает соединение с URL.- Кодировка: Метод
encodeпреобразует текст в байты для отправки,decode— для чтения.
Отправитель HTTP-запросов
Расширенный пример клиента с возможностью отправки данных методом POST.
Код ITЗагрузка примера кода…
Разбор:
urlencode: Преобразует словарь параметров в строку видаkey1=value1&key2=value2.- Класс
Request: Позволяет задать метод запроса (POST) и дополнительные заголовки. - Контекстный менеджер
with: Автоматически закрывает соединение после получения ответа.
Утилита для сканирования директорий
Инструмент для обхода дерева папок и вывода информации о файлах.
Код ITЗагрузка примера кода…
Разбор:
- Рекурсия: Функция вызывает сама себя для обработки вложенных подпапок.
os.listdir: Возвращает список имен файлов и папок в указанной директории.os.path.join: Корректно формирует путь к файлу независимо от операционной системы.os.path.isdir: Проверяет, является ли путь директорией.os.path.getsize: Получает размер файла в байтах.
Скрипт для создания резервного копирования файлов
Автоматическое создание копии файлов с добавлением временной метки.
Код ITЗагрузка примера кода…
Разбор:
datetime: Генерирует уникальное имя папки на основе текущего времени.shutil.copytree: Копирует всю директорию вместе со всеми вложенными файлами и поддиректориями.os.makedirs: Создает целевую директорию, если она отсутствует.
Мониторинг дискового пространства
Использование модуля psutil (часто используется в таких задачах) или стандартных средств ОС для проверки свободного места. В данном примере показано использование встроенного модуля shutil для Unix/Linux и Windows.
Код ITЗагрузка примера кода…
Разбор:
shutil.disk_usage: Возвращает кортеж из общего размера, занятого и свободного пространства в байтах.- Битовые сдвиги (
// 2**30): Перевод байтов в гигабайты. - Определение ОС: Проверка
os.nameпозволяет выбрать правильный корневой путь для Windows или Linux.
Парсер URL и проверка доступности ресурса
Разбор структуры ссылки и проверка её работоспособности.
Код ITЗагрузка примера кода…
Разбор:
urlparse: Разбивает строку URL на составные части (схема, хост, путь, параметры).timeout: Параметр ограничивает время ожидания ответа, чтобы скрипт не зависал.- Обработка
URLError: Специфичная обработка ошибок сетевого взаимодействия.
Конвертер форматов дат
Преобразование строк с датами между различными форматами.
Код ITЗагрузка примера кода…
Разбор:
strptime: Преобразует строку в объект даты и времени согласно шаблону.strftime: Преобразует объект даты и времени обратно в строку по шаблону.- Коды форматов:
%Y(год),%m(месяц),%d(день),%A(полное название дня недели).
Утилита для просмотра запущенных процессов
Просмотр списка активных процессов и их идентификаторов.
Код ITЗагрузка примера кода…
Разбор:
subprocess.run: Выполняет внешнюю команду операционной системы.capture_output=True: Перехватывает вывод команды вместо вывода в консоль.text=True: Возвращает результат как строку, а не как байты.platform.system: Определяет текущую операционную систему для выбора правильной команды.
Характерный пример для Python — Использование декораторов
Python отличается своей поддержкой метапрограммирования через декораторы. Декоратор позволяет обернуть функцию дополнительным поведением без изменения её кода. Это характерная черта языка, позволяющая писать чистый и выразительный код.
Код ITЗагрузка примера кода…
Разбор:
- Высокоуровневые функции: Функция
timer_decoratorпринимает другую функцию как аргумент. - Замыкания (Closure): Внутренняя функция
wrapperзапоминает контекст внешней функции. *argsи**kwargs: позволяют декоратору принимать любое количество позиционных и именованных аргументов и передавать их оригинальной функции. Подробнее — произвольное число аргументов.- Синтаксический сахар (
@): Запись@timer_decoratorнад функцией является сокращением для вызоваslow_function = timer_decorator(slow_function).
Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.