Практическая работа №4
Работа с текстовыми файлами и обработка данных в Python
Section titled “Работа с текстовыми файлами и обработка данных в Python”Цель работы: Научиться использовать стандартные средства Python для работы с текстовыми файлами: чтение, запись, последовательная обработка данных, формирование отчётов и обработка ошибок при работе с внешними данными.
Основные теоретические положения
Section titled “Основные теоретические положения”1. Работа с файлами в Python
Для работы с файлами используются встроенные средства языка Python.
Основная функция для открытия файла:
open(filename, mode, encoding)Пример открытия файла для чтения:
file = open("data.txt", "r", encoding="utf-8")Однако рекомендуется использовать конструкцию with, которая
автоматически закрывает файл после завершения работы:
with open("data.txt", "r", encoding="utf-8") as file: data = file.read()2. Режимы открытия файла
Режим Назначение
r Чтение существующего файла
w Запись в файл с удалением старого содержимого
a Добавление данных в конец файла
Пример добавления записи в журнал:
with open("log.txt", "a", encoding="utf-8") as file: file.write("Новое событие\n")3. Построчное чтение файла
Большие файлы рекомендуется обрабатывать последовательно, не загружая полностью в память.
with open("data.txt", "r", encoding="utf-8") as file: for line in file: print(line)Для удаления символа переноса строки используется метод strip():
line = line.strip()4. Преобразование данных из файла
Все данные из текстового файла читаются как строки.
Например, если файл содержит числа:
457288Необходимо выполнить преобразование:
value = int(line.strip())5. Запись результатов обработки
Для создания отчёта используется режим записи:
with open("report.txt", "w", encoding="utf-8") as file: file.write("Отчёт\n")6. Обработка ошибок при работе с файлами
При работе с файлами возможны ошибки:
- файл отсутствует;
- данные имеют неверный формат;
- невозможно преобразовать значение.
Пример обработки отсутствующего файла:
try: with open("data.txt", "r", encoding="utf-8") as file: data = file.read()
except FileNotFoundError: print("Файл не найден")Обработка ошибки преобразования:
try: value = int(line)
except ValueError: print("Некорректное значение")Компиляция и запуск программы
Section titled “Компиляция и запуск программы”Python-программы запускаются командой:
python3 имя_файла.pyОбщие требования
Section titled “Общие требования”Для каждого задания необходимо:
- Составить алгоритм решения задачи.
- Создать необходимые входные файлы.
- Реализовать программу на языке Python.
- Предусмотреть обработку ошибок работы с файлами.
- Продемонстрировать работу программы на тестовых данных.
Задания для выполнения
Section titled “Задания для выполнения”Задание 1. Анализ файла загрузки процессора
Создайте файл cpu.txt:
45728891675384763995Разработайте программу, которая:
- открывает файл;
- считывает значения построчно;
- выводит номер измерения и значение;
- определяет количество измерений;
- вычисляет среднюю загрузку;
- определяет максимальное значение.
Пример результата:
Измерение 1: 45 %
Количество измерений: 10Средняя загрузка: 71.0 %Максимальная загрузка: 95 %Задание 2. Поиск критических значений
Используя файл cpu.txt, определите:
- количество значений выше 80%;
- количество значений ниже 20%;
- количество нормальных значений.
Дополнительно необходимо вывести номера строк с высокой загрузкой:
Строка 3: 88 %Строка 4: 91 %Задание 3. Формирование отчёта
На основе данных файла cpu.txt сформируйте файл report.txt.
Файл должен содержать:
Отчёт мониторинга CPU
Количество измерений: 10Средняя загрузка: 71.0 %Минимальная загрузка: 39 %Максимальная загрузка: 95 %Количество превышений: 4Все значения должны вычисляться программой.
Задание 4. Анализ журнала событий
Создайте файл auth.log:
192.168.1.10 LOGIN_SUCCESS192.168.1.15 LOGIN_FAILED192.168.1.20 LOGIN_SUCCESS192.168.1.15 LOGIN_FAILED192.168.1.15 LOGIN_FAILED192.168.1.30 LOGIN_FAILEDРазработайте программу анализа журнала.
Программа должна:
- определить количество успешных входов;
- определить количество неудачных входов;
- вывести IP-адреса, где произошли ошибки.
Для разделения строки используйте:
parts = line.split()Задание 5. Обработка некорректных данных
Измените файл cpu.txt:
4572error88
9110567abcДоработайте программу:
- пропускайте пустые строки;
- обрабатывайте ошибки преобразования;
- проверяйте диапазон значений от 0 до 100;
- выводите номер строки с ошибкой;
- подсчитывайте количество корректных и некорректных записей.
Используйте:
try: value = int(line.strip())
except ValueError: ...Также обработайте ситуацию отсутствия файла.
Задание 6. Анализ доступности сетевых узлов
Создайте файл ping.txt:
1521-11846-1312710419Значение -1 означает отсутствие ответа узла.
Определите:
- количество доступных узлов;
- количество недоступных узлов;
- среднее время ответа;
- максимальное время ответа.
Значения выше 50 мс запишите в файл:
slow.txtКонтрольные вопросы
Section titled “Контрольные вопросы”- Для чего используется функция
open()? - Почему рекомендуется использовать конструкцию
with open()? - Чем отличаются режимы
r,wиa? - Почему данные из файла необходимо преобразовывать?
- Для чего используется метод
strip()? - Почему большие файлы лучше обрабатывать построчно?
- Какое исключение возникает при преобразовании
int("abc")? - Для чего используется
try/except? - Как записать данные в новый файл?
- Как связаны циклы и обработка файлов?
Рекомендуемая литература
Section titled “Рекомендуемая литература”-
Python Documentation --- Input and Output.
https://docs.python.org/3/tutorial/inputoutput.html -
Python Documentation --- Built-in Functions.
https://docs.python.org/3/library/functions.html#open -
Марк Лутц. Изучаем Python. --- O’Reilly Media.
-
Эрик Мэтиз. Изучаем Python. Программирование игр, визуализация данных, веб-приложения. --- СПб.: Питер.