Работа с файлами

В Python встроены мощные средства для работы с файлами. Основные операции включают чтение, запись и обновление файлов.

Открытие файла

Файл открывается с помощью функции open(). Она принимает два аргумента: путь к файлу и режим открытия.

file = open('filename.txt', 'r')
content = file.read()
file.close()

Режимы открытия файлов:

  • ‘r’ — открытие для чтения (по умолчанию).
  • ‘w’ — открытие для записи (файл будет перезаписан).
  • ‘a’ — открытие для добавления (запись в конец файла).
  • ‘r+’ — открытие для чтения и записи.
  • ‘w+’ — открытие для чтения и записи (файл будет перезаписан).
  • ‘a+’ — открытие для чтения и добавления.

Метод file.close() в Python закрывает открытый файловый объект. Когда файл открыт для чтения или записи, операционная система выделяет ресурсы для управления этим файлом. Вызывая close(), вы освобождаете эти ресурсы и завершаете взаимодействие с файлом.

Чтение файла

Существует несколько способов чтения содержимого файла:

  • read() — чтение всего содержимого файла.
  • readline() — чтение одной строки.
  • readlines() — чтение всех строк в виде списка.
with open('filename.txt', 'r') as file:
    content = file.read()
    print(content)

Использование конструкции with гарантирует закрытие файла после завершения работы с ним.

Запись в файл

Для записи в файл используется метод write().

with open('filename.txt', 'w') as file:
    file.write('Новая строка')

Обновление файла

Для обновления файла можно открыть его в режиме ‘r+’, прочитать содержимое, внести изменения и записать обратно.

with open('filename.txt', 'r+') as file:
    content = file.read()
    new_content = content.replace('старое значение', 'новое значение')
    file.seek(0)
    file.write(new_content)
    file.truncate()

Рассмотрим каждую часть кода по отдельности, чтобы понять, что происходит. Код открывает файл filename.txt в режиме 'r+', что означает чтение и запись. Затем выполняются следующие действия:

  1. content = file.read(): Читается всё содержимое файла и сохраняется в переменной content.
  2. new_content = content.replace('старое значение', 'новое значение'): Создается новая строка new_content, в которой все вхождения строки 'старое значение' заменяются на 'новое значение'.

file.seek(0) перемещает указатель текущей позиции в файле на начало файла (позиция 0). Это необходимо, чтобы последующие операции записи начинались с самого начала файла, а не продолжались с той позиции, на которой закончился предыдущий вызов read().

file.truncate() обрезает файл до текущей позиции указателя. Если позиция указателя была перемещена в начало файла с помощью seek(0), то весь файл будет перезаписан новым содержимым. Если бы позиция указателя находилась посередине файла, то все данные после этой точки были бы удалены.

Источник: https://stepik.org/lesson/1582351/step/1?unit=1603700

Было ли это полезно?

0 / 0