Skip to content

Практическая работа №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. Преобразование данных из файла

Все данные из текстового файла читаются как строки.

Например, если файл содержит числа:

45
72
88

Необходимо выполнить преобразование:

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-программы запускаются командой:

Terminal window
python3 имя_файла.py

Для каждого задания необходимо:

  1. Составить алгоритм решения задачи.
  2. Создать необходимые входные файлы.
  3. Реализовать программу на языке Python.
  4. Предусмотреть обработку ошибок работы с файлами.
  5. Продемонстрировать работу программы на тестовых данных.

Задания для выполнения

Section titled “Задания для выполнения”

Задание 1. Анализ файла загрузки процессора

Создайте файл cpu.txt:

45
72
88
91
67
53
84
76
39
95

Разработайте программу, которая:

  • открывает файл;
  • считывает значения построчно;
  • выводит номер измерения и значение;
  • определяет количество измерений;
  • вычисляет среднюю загрузку;
  • определяет максимальное значение.

Пример результата:

Измерение 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_SUCCESS
192.168.1.15 LOGIN_FAILED
192.168.1.20 LOGIN_SUCCESS
192.168.1.15 LOGIN_FAILED
192.168.1.15 LOGIN_FAILED
192.168.1.30 LOGIN_FAILED

Разработайте программу анализа журнала.

Программа должна:

  • определить количество успешных входов;
  • определить количество неудачных входов;
  • вывести IP-адреса, где произошли ошибки.

Для разделения строки используйте:

parts = line.split()

Задание 5. Обработка некорректных данных

Измените файл cpu.txt:

45
72
error
88
91
105
67
abc

Доработайте программу:

  • пропускайте пустые строки;
  • обрабатывайте ошибки преобразования;
  • проверяйте диапазон значений от 0 до 100;
  • выводите номер строки с ошибкой;
  • подсчитывайте количество корректных и некорректных записей.

Используйте:

try:
value = int(line.strip())
except ValueError:
...

Также обработайте ситуацию отсутствия файла.


Задание 6. Анализ доступности сетевых узлов

Создайте файл ping.txt:

15
21
-1
18
46
-1
31
27
104
19

Значение -1 означает отсутствие ответа узла.

Определите:

  • количество доступных узлов;
  • количество недоступных узлов;
  • среднее время ответа;
  • максимальное время ответа.

Значения выше 50 мс запишите в файл:

slow.txt

  1. Для чего используется функция open()?
  2. Почему рекомендуется использовать конструкцию with open()?
  3. Чем отличаются режимы r, w и a?
  4. Почему данные из файла необходимо преобразовывать?
  5. Для чего используется метод strip()?
  6. Почему большие файлы лучше обрабатывать построчно?
  7. Какое исключение возникает при преобразовании int("abc")?
  8. Для чего используется try/except?
  9. Как записать данные в новый файл?
  10. Как связаны циклы и обработка файлов?

Рекомендуемая литература

Section titled “Рекомендуемая литература”
  1. Python Documentation --- Input and Output.
    https://docs.python.org/3/tutorial/inputoutput.html

  2. Python Documentation --- Built-in Functions.
    https://docs.python.org/3/library/functions.html#open

  3. Марк Лутц. Изучаем Python. --- O’Reilly Media.

  4. Эрик Мэтиз. Изучаем Python. Программирование игр, визуализация данных, веб-приложения. --- СПб.: Питер.