2023-06-03
570

Чтение и запись файлов в Python

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

Есть два способа открытия файлов, в первом случае нужно закрывать файл самостоятельно, во втором случае - не нужно. Рекомендуется использовать второй вариант.

f = open(filename, [mode], [encoding])
    text = f.read()
    f.close()
with open (filename, [mode], [encoding]) as f:
    text = f.read()

Опции открытия файлов

Режим

  • 'r' открытие на чтение (является значением по умолчанию)
  • 'w' открытие на запись, содержимое файла удаляется, если файла не существует, создается новый
  • 'x' создание файла и открытие его на запись, если файл существует - генерируется исключение
  • 'a' открытие для добавления, информация добавляется в конец файла
  • 'b' открытие в двоичном режиме
  • 't' открытие в текстовом режиме (является значением по умолчанию)
  • '+' открытие на чтение и запись

Кодировка

    Если не указывать encoding берется кодировка системы по умолчанию
  • Для Windows - 1251
  • Для Linux - utf-8

Кодировку стоит указывать всегда.

Методы для чтения и записи

  • text = file.read() просто возвращает весь текст в виде строки
  • text = file.readline() возвращает список всех строк, включая символы \n, два раза выполнить эту команду нельзя без закрытия файла, так как курсор будет в конце файла и будет возвращен пустой список
  • file.write(text)

Примеры

f = open ('/file.txt', 'r', encoding='utf-8')
    text = f.read()
    f.close()

# Чтобы избежать ситуации когда файл останется открыт при какой то ошибке можно воспользоваться конструкцией
try:
    file = open('file.txt', 'r', encoding='utf-8')
    text = file.read()
finally:
    file.close()
with open ('file1.txt', 'r', encoding='utf-8') as f: 
    text = f.read()

with open('file2.txt','w', encoding='utf-8') as f: 
    f.write(text)